[Golang] if 문

2021-10-07 hit count image

Golang에서 if문을 사용하는 방법에 대해서 살펴봅시다.

개요

이번 블로그 포스트에서는 Golang에서 if문을 사용하는 방법에 대해서 살펴보려고 합니다. 이 블로그 포스트에서 소개하는 코드는 다음 링크를 통해 확인하실 수 있습니다.

if문

Golang에서는 다음과 같이 if문을 사용할 수 있습니다. if문을 사용하여 조건을 검사하고, 조건에 해당하는 구문을 실행할 수 있습니다.

if 조건 {
  코드 블록
} else if 조건 {
  코드 블록
} else {
  코드 블록
}

if문을 사용하는 방법에 대해서 알아보기 위해, main.go 파일을 생성하고 다음과 같이 작성합니다.

package main

import "fmt"

func main() {
  v := 89

  if v > 90 {
    fmt.Println("B")
  } else if v > 80 {
    fmt.Println("B")
  } else if v > 70 {
    fmt.Println("C")
  } else {
    fmt.Println("F")
  }
}

작성한 프로그램을 실행하면 다음과 같은 결과를 얻을 수 있습니다.

# go run main.go
B

쇼트 서킷

Golang에서는 조건식을 실행할 때, 쇼트 서킷(Short circuit)이 사용됩니다.

false && 조건

논리 연산을 수행할 때, 앞에 조건을 수행하고, 그 다음 뒤에 조건을 수행하게 됩니다. && 연산은 두 조건이 모두 참일 때만, 참이 됩니다. 따라서 위와 같이 앞에 실행한 조건이 false이면 뒤에 조건을 실행해도 절대로 true가 될 수 없기 때문에, 뒤에 조건은 실행하지 않고, 결과로 false를 반환하게 됩니다.

true || 조건

위에 조건도 역시, 앞에 조건이 이미 true이고, or 연산은 둘중 하나만 참이여도 참이 되므로, 뒤에 연산을 굳이 실행할 필요가 없습니다.

Golang에서는 이와 같은 쇼트 서킷이 사용되며, main.go를 다음과 같이 수정하여 확인할 수 있습니다.

package main

import "fmt"

func first(result bool) bool {
  fmt.Println("first condition is called!")
  return result
}

func second() bool {
  fmt.Println("Second condition is called!")
  return true
}

func main() {
  fmt.Println("ex 1")
  if first(false) && second() {
  }

  fmt.Println("ex 2")
  if first(true) && second() {
  }

  fmt.Println("ex 3")
  if first(true) || second() {
  }

  fmt.Println("ex 4")
  if first(false) || second() {
  }
}

작성한 프로그램을 실행하면 다음과 같은 결과를 얻을 수 있습니다.

ex 1
first condition is called!
ex 2
first condition is called!
Second condition is called!
ex 3
first condition is called!
ex 4
first condition is called!
Second condition is called!

이로써 쇼트 서킷이 적용되어 두번째 조건을 실행하지 않는 것을 확인할 수 있습니다.

조건문의 초기화문

다른 언어와는 다르게 Golang에서는 if문에서 초기화문(Initialization statement)을 사용할 수 있습니다.

if 초기화문; 조건문 {
  코드 블록
}

초기화문에서 할당된 변수는, 조건문에서 사용되거나 조건문안에 코드 블록에서 사용할 수 있습니다.

func testFunc() (int, bool) {
  return 1, true
}

func main() {
  if v, success := testFunc(); success {
   fmt.Println(v)
  }

  fmt.Println(v) // ERROR
}

초기화문에서 선언된 변수는 외부에서는 사용할 수 없으므로, 위와 같이 외부에서 사용하는 경우 컴파일 에러가 발생합니다.

완료

이것으로 Golang에서 if문을 사용하는 방법에 대해서 알아보았습니다. 또한 Golang의 특유 문법인 조건문의 초기화문에 대해서도 알아보았습니다.

제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!

책 홍보

스무디 한 잔 마시며 끝내는 React Native 책을 출판한지 벌써 2년이 다되었네요.
이번에도 좋은 기회가 있어서 스무디 한 잔 마시며 끝내는 리액트 + TDD 책을 출판하게 되었습니다.

아래 링크를 통해 제가 쓴 책을 구매하실 수 있습니다.
많은 분들에게 도움이 되면 좋겠네요.

스무디 한 잔 마시며 끝내는 React Native, 비제이퍼블릭
스무디 한 잔 마시며 끝내는 리액트 + TDD, 비제이퍼블릭
Posts