본문으로 바로가기

[GoLang] 조건문

category Language/Go 2019. 8. 13. 15:47

Go의 조건문인 if, switch문에 대해 알아봅시다.

 

if문

어느 언어에서나 등장하는 바로 그 if 입니다.

다른 언어와 큰 차이는 없지만 주의점이 있습니다.

Go의 if문에서는 무조건 Boolean 식만 사용가능합니다.

0, 1 등으로 if문이 사용 가능한 다른 몇몇 언어들과는 다른 점입니다.

  

간단한 사용 예시입니다.

1
2
3
4
5
6
7
8
9
package main
 
func main() {
    a := 1
    if a == 1 {
        println("TRUE~~")
    }
}
 
cs

결과는 당연히

입니다.

 

if - else 문

if-else문도 당연히 존재합니다.

예시입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
package main
 
func main() {
    a := 3
    if a == 1 {
        println("1입니다.")
    } else if a == 2 {
        println("2입니다.")
    } else {
        println("둘다 아닙니다.")
    }
}
 
cs

결과는 아래입니다.

optional statement

if 문 내에서 간단한 변수 선언이나 문장등의 실행이 가능합니다. ;(세미콜론으로 구분)하고 한 문장 안에 있어야 합니다.

이때 선언한 변수의 범위(scope)는 당연하지만 if-else문 괄호 안입니다.

예시입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package main
 
func main() {
    a := 3
    b := 10
    if c := a * 2; c < b {
        println(c)
    }
    
    // println(c) // error(undefined: c)
    
    if println("Hi"); a < b {
        println("Go")
    }
}
 
cs

결과입니다.

주석처리해둔 println(c)의 주석을 풀면

위와같은 에러가 납니다.

위에서 말했던 것처럼 scope를 벗어나서 변수 c가 undefined된 변수가 되버린것 입니다.

 

switch문

switch문 또한 존재합니다. switch 뒤에 변수나 expression을 적어서 사용합니다. 

Go에서는 break를 적지 않아도 자동으로 멈추기 때문에 다음 case로 이동하지 않습니다.

기본 사용 예시입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package main
 
func main() {
    var name string
    menu := 1
 
    switch menu {
    case 1:
        name = "start"
    case 2:
        name = "option"
    case 3:
        name = "help"
    default:
        name = "exit"
    }
    println(name)
 
    // Expression을 사용한 경우
    switch x := menu + 2; x {
    case 1:
        name = "one"
    case 23:
        name = "two, three"
    default:
        name = "default"
 
    }
    println(name)
}
 
cs

위의 경우는 일반적인 사용이고 아래는 expression이 들어간 경우입니다.

결과는 

expression에는 위의 예시처럼 변수 선언이나 

switch println("Hi"); menu { ... }

처럼 간단한 문장이 들어갈 수 있습니다.

 

fallthrough 

일반적이 언어들의 switch문 처럼 조건이 맞아도 다음 case로 가고 싶다면

fallthrough를 이용해야 합니다.

사용 예시입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package main
 
func main() {
    val := 2
    check(val)
}
 
func check(val int) {
    switch val {
    case 1:
        println("실행되지 안습니다.")
        fallthrough
    case 2:
        println("val = 2 이기 때문에 실행됩니다.")
        fallthrough
    case 3:
        println("fallthrough에 의해 실행됩니다.(1)")
        fallthrough
    default:
        println("fallthrough에 의해 실행됩니다.(2)")
    }
}
 
cs

결과입니다.

 

'Language > Go' 카테고리의 다른 글

[GoLang] 연산자  (0) 2019.08.08
[GoLang] 자료형, 변수, 상수  (0) 2019.08.04
[GoLang] Go 개발 환경 구축하기 (VS Code, vim)  (0) 2019.08.01
[GoLang] Go 설치하기 (리눅스/윈도우)  (0) 2019.08.01
[GoLang] Hello, playground  (0) 2019.08.01