[Go] Go 언어 예제와 기본 문법 정리 3탄
(조건문 if, switch)
(Go 언어 버전 : 1.13.7, 글쓴날 : 2020.02.17)
* 이 글은 글쓴이가 공부한 내용을 정리하며 올리는 글입니다.
* 글의 내용은 공식 홈페이지 및 튜토리얼을 기반으로 공부하여 작성하였습니다.
* Go 언어가 처음이시라면 ☞ [Go] Go 언어 소개와 설치 및 컴파일 방법
* 1탄을 보고 싶으시다면 ☞ [Go] Go 언어 예제와 기본 문법 정리 1탄
* 2탄을 보고 싶으시다면 ☞ [Go] Go 언어 예제와 기본 문법 정리 2탄
Go 언어 기본 문법 정리
Go 언어의 조건문은 if와 switch 키워드를 사용해 작성합니다.
1) 조건문 if
먼저, if 키워드를 이용한 조건문부터 소개 드리겠습니다.
(ex)
1
2
3
4
5
6
7
8
9
10
11
|
package main
import "fmt"
func main() {
name := "Minchan"
if name == "Minchan" {
fmt.Print("Hello, Minchan?")
}
}
|
제가 느끼기엔 C 언어의 조건문 사용 방식과 Python의 조건문 사용 방식의 콜라보인 것 같습니다.
기존 C 언어의 조건문처럼 쓰시되 Python처럼 조건 표현식에 소괄호 ( )가 들어가지 않습니다.
그렇다고 조건문 블록 지정을 Python처럼 : 로 하지는 않으며 C 언어처럼 중괄호 { }를 사용해 조건문 블록을 지정합니다. (조건문 선언 라인에 중괄호 시작을 꼭 해주셔야합니다. 이유는 1탄 세미콜론 참조)
Go 언어에서 조건 표현식의 결과는 무조건 bool 타입(자료형)이어야 합니다.
예를 들어 C 언어처럼 조건 표현식의 결과가 1이면 참, 0이면 거짓이 되지 않고 에러가 발생합니다.
(ex)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
package main
import "fmt"
func main() {
if true {
fmt.Print("Hello?")
}
/*
에러 발생!
if 1 {
fmt.Print("Hello?")
}
*/
}
|
최초의 if 조건에서 분기되는 다른 조건문을 작성하실 때는 else if, else 키워드를 사용하시면 됩니다.
이제 감이 오시겠지만 else if, else 키워드를 사용 시에는 반드시 이전 조건문이 끝나는 중괄호 } 바로 뒤에 이어 적어주셔야 합니다!
(ex)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
package main
import "fmt"
func main() {
name := "Minchan"
if name == "Yoonjae" {
fmt.Print("You are Yoonjae!")
} else if name == "Rokwon" {
fmt.Print("You are Rokwon!")
} else {
fmt.Print("You are not Yoonjae and Rokwon!!") // 이 문장이 출력됩니다.
}
}
|
Go 언어는 다른 언어와 다르게 if 키워드 뒤에 조건문 안에서의 지역변수를 추가로 설정할 수 있습니다.
(ex)
1
2
3
4
5
6
7
8
9
10
11
12
13
|
package main
import "fmt"
func main() {
name := "Minchan"
if age := 24; name == "Minchan" && age == 24 {
fmt.Print("You are Minchan!")
}
// fmt.Print(age); 에러 발생! (if문 밖에서 age에 접근했습니다.)
}
|
이는 Go 언어의 특징 중 하나로 다른 키워드인 switch, for 등에서도 설정 가능합니다.
(단, 추가로 설정한 변수는 해당 유효범위 밖에서는 사용하실 수 없으니 주의하셔야 합니다!)
2) 조건문 switch
다음은, switch 키워드를 이용한 조건문입니다.
우선, Go 언어에서의 switch 문법 사용 예시입니다.
기존 언어의 switch 문법과 별다를 게 없으며 case 하나에 여러 가지 값들을 적용하고 싶을 경우 ,(쉼표)를 통해 구분하여 적어주시면 되겠습니다.
(ex)
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
import "fmt"
func main() {
var fruit string
brix := 5
switch brix {
case 1:
fruit = "apple"
case 2, 3:
fruit = "banana"
case 4, 5, 6:
fruit = "kiwi"
case 7:
fruit = "grape"
default:
fruit = "orange"
}
fmt.Print(fruit)
}
|
Go 언어의 switch 문법은 기존 언어의 switch 문법과 다른 여러 가지 특징이 있습니다.
(1) switch 키워드 뒤에 조건을 생략할 수 있습니다.
이 경우 swicth true로 간주하여 무조건 switch문이 실행되며 각 case의 조건을 검사하게됩니다.
(ex)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
package main
import "fmt"
func main() {
var fruit string
brix := 5
// switch 키워드 뒤 조건식을 생략할 수 있습니다.
switch {
case brix == 1:
fruit = "apple"
case brix == 2, brix == 3:
fruit = "banana"
case brix == 4 || brix == 5 || brix == 6:
fruit = "kiwi"
case brix == 7:
fruit = "grape"
default:
fruit = "orange"
}
fmt.Print(fruit)
}
|
(2) switch문이 실행되다 특정 case에 만족한 경우 다음 case부터는 실행되지 않습니다.
이는 Go 언어를 컴파일 시 각 case의 마지막에 자동으로 break 키워드가 붙기 때문입니다.
만약, 이를 무시하고 다음 case도 실행하고 싶을 경우 fallthrough 키워드를 사용해주시면 되겠습니다.
(ex)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
package main
import "fmt"
func main() {
brix := 1
switch {
case brix < 5:
fmt.Println("case brix < 5입니다.")
fallthrough
case brix < 4:
fmt.Println("case brix < 4입니다.")
fallthrough
case brix < 3:
fmt.Println("case brix < 3입니다.") // 다음 case부터는 실행되지 않습니다.
case brix < 2:
fmt.Println("case brix < 2입니다.")
default:
fmt.Println("default 입니다.")
}
}
|
(3) Switch 키워드 뒤에 복잡한 표현식을 사용할 수 있습니다.
(ex)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
package main
import "fmt"
func main() {
var fruit string
brix := 5
// 복잡한 표현식을 사용할 수 있습니다.
switch price := brix + 102 ; price - 100 {
case 1:
fruit = "apple"
case 2, 3:
fruit = "banana"
case 4, 5, 6:
fruit = "kiwi"
case 7:
fruit = "grape"
default:
fruit = "orange"
}
fmt.Print(fruit)
}
|
여기까지 Go 언어 예제와 기본 문법 정리 3탄이었습니다.
이번 3탄에서는 Go 언어의 조건문에 사용되는 키워드 if와 switch에 대하여 알아보았습니다.
많은 도움이 되셨길 바라며,
다음 4탄에서는 3탄에서 다루지 않은 예제와 Go 언어의 문법에 대해 알려드리도록 하겠습니다.
감사합니다!
'Deprecated' 카테고리의 다른 글
[Troubleshooting] React, create-react-app으로 프로젝트 시작 시 템플릿 생성이 안되는 문제 (0) | 2020.02.23 |
---|---|
[Realm] Realm이란 무엇인가? (2) | 2020.02.22 |
[Go] Go 언어 예제와 기본 문법 정리 2탄(변수 var, 상수 const) (0) | 2020.02.16 |
[Python] Python 소개와 설치 방법 (4) | 2020.02.14 |
[Go] Go 언어 예제와 기본 문법 정리 1탄(패키지, 임포트와 익스포트, 세미콜론, 주석) (0) | 2020.02.13 |