🔥 if와 else

260자
3분

Go 언어에서는 ifelse 문을 사용하여 조건에 따라 코드의 실행 흐름을 제어할 수 있습니다. if 문 안에서 선언한 변수는 else 블록 내에서도 사용할 수 있어요. 이를 잘 활용하면 코드를 더욱 간결하고 읽기 쉽게 작성할 수 있습니다.

아래 예제 코드를 통해 ifelse 문의 사용법을 자세히 살펴볼게요.

go
package main
 
import (
    "fmt"
    "math"
)
 
func pow(x, n, lim float64) float64 {
    if v := math.Pow(x, n); v < lim {
        return v
    } else {
        fmt.Printf("%g >= %g\n", v, lim)
    }
    // v는 여기서 사용할 수 없습니다.
    return lim
}
 
func main() {
    fmt.Println(
        pow(3, 2, 10),
        pow(3, 3, 20),
    )
}
 
go
package main
 
import (
    "fmt"
    "math"
)
 
func pow(x, n, lim float64) float64 {
    if v := math.Pow(x, n); v < lim {
        return v
    } else {
        fmt.Printf("%g >= %g\n", v, lim)
    }
    // v는 여기서 사용할 수 없습니다.
    return lim
}
 
func main() {
    fmt.Println(
        pow(3, 2, 10),
        pow(3, 3, 20),
    )
}
 

위 코드에서 pow 함수는 세 개의 float64 타입 매개변수 x, n, lim을 받아요. 함수 내부에서는 다음과 같은 일이 일어납니다.

  1. if 문의 조건에서 v := math.Pow(x, n)을 사용하여 xn제곱 값을 계산하고, 그 결과를 v라는 변수에 할당해요.
  2. 만약 vlim보다 작으면 v를 반환합니다.
  3. 그렇지 않고 vlim보다 크거나 같으면 else 블록이 실행되어 "%g >= %g\n" 형식으로 vlim을 출력해요.
  4. else 블록 밖에서는 v를 사용할 수 없으므로, lim을 반환합니다.

main 함수에서는 pow 함수를 두 번 호출하여 그 결과를 출력해요.

  1. 첫 번째 호출에서는 pow(3, 2, 10)을 실행하여 3의 2제곱인 9를 반환합니다. 9는 10보다 작으므로 if 블록이 실행되어 9를 반환해요.
  2. 두 번째 호출에서는 pow(3, 3, 20)을 실행하여 3의 3제곱인 27을 계산합니다. 27은 20보다 크므로 else 블록이 실행되어 "27 >= 20"을 출력하고, lim인 20을 반환해요.

이처럼 ifelse 문을 사용하면 조건에 따라 코드의 실행 흐름을 쉽게 제어할 수 있습니다. 또한, if 문에서 선언한 변수를 else 블록에서도 사용할 수 있어 코드를 간결하게 작성할 수 있습니다.

YouTube 영상

채널 보기
사이드 이펙트를 가진 함수를 합성할 수 있을까? | 클라이슬리 카테고리 1편 | 프로그래머를 위한 카테고리 이론
함수 합성을 추상화 할 수 있을까? | 클라이슬리 카테고리 2편 | 프로그래머를 위한 카테고리 이론
Writer 카테고리 구현 해 보기 | 크라이슬리 카테고리 3편 | 프로그래머를 위한 카테고리 이론
합타입 - Either, Maybe, List | 프로그래머를 위한 카테고리 이론
동적 모듈 이해하기 | NestJS 가이드
곱타입 - 튜플과 레코드(구조체) | 프로그래머를 위한 카테고리 이론
피처 모듈은 무엇이고 왜 필요할까? | NestJS 가이드
Haskell로 배우는 Writer 모나드 | 클라이슬리 카테고리 마지막편 | 프로그래머를 위한 카테고리 이론