if문
“만약 ~ 이라면 … 해라.” 라는 뜻으로 해석 가능합니다.
if 조건 { 실행문 } else if 조건 { 실행문 } else { 실행문 } age := 35 if age > 30 { fmt.Println("중년") }
이전에 포스팅 했던 변수, 상수, 연산자들을 써서 조건을 만들고, 조건이 참(true)이면 구문을 실행하고, 거짓이면 실행하지 않고 건너 뜁니다. 단, else 구문을 작성했다면 if 절에서 비교했던 조건이 거짓(false)일 경우 else 구문이 실행됩니다.
package main import "fmt" func main() { age := 15 if age <= 13 { fmt.Println("초등학생") } else if age > 13 && age <= 16 { fmt.Println("중학생") } else if age > 16 && age <= 19 { fmt.Println("고등학생") } }
if 초기문
Go 언어에서는 if문에 C언어의 for문 처럼 변수를 초기화 할 수 있는 초기문을 넣을 수 있습니다.
if fileName, isSuccess := UploadFile(); isSuccess { fmt.Println("Upload success", filename) } else { fmt.Println("Failed to upload") }
switch 문
switch문은 값에 따라 다른 로직으로 분기하고 싶을때 사용합니다. if문과 비슷하지만 여러 곳으로 분기 하려면 switch가 더 편리합니다.
switch 비교값 { case 값1: 실행문 case 값2: 실행문 case 값3: 실행문 }
간단한 사용 예 입니다.
package main import "fmt" func main() { age := 15 switch age { case 14: fmt.Println("중학교 1학년") case 15: fmt.Println("중학교 2학년") case 16: fmt.Println("중학교 3학년") } }
switch문의 다양한 표현
case 문에 여러 조건을 같이 작성할 수 있습니다.
package main import "fmt" func main() { age := 15 switch age { case 14, 15, 16: fmt.Println("중학생") case 17, 18, 19: fmt.Println("고등학생") case 20, 21, 22, 23: fmt.Println("대학생") } }
비교할 값을 생략하고 case에서 조건을 달아서 실행하게도 할 수 있습니다. 하지만 이런 경우라면 if문을 쓰는 것이 좋을 것 같습니다.
switch true { // 이렇게 하면 case문에서 if문과 같이 조건을 달아서 분기할 수있다. ... } switch { // 이렇게 표현도 가능하다. ... }
switch문도 if문과 같이 초기문을 넣을 수 있습니다.
switch 초기문; 비교값 { case 값1: ... case 값2: ... default: }
default 구문은 위 case문 중에서 어느 조건에도 참이 아닐때 실행되는 구문입니다.
package main import "fmt" func main() { switch age := 15; true { case age < 14: fmt.Println("어린이") case age < 17: fmt.Println("중학생") case age < 20: fmt.Println("고등학생") case age < 24: fmt.Println("대학생") default: fmt.Println("학생이 아닙니다.") } }
C언의 switch-case 문과 다른 점
C언어에서는 case문에 반드시 break 문을 넣어야지만 해당 case 구문만 실행이 됩니다. break문을 빼먹으면 다음 case문까지 실행이 되기 때문입니다. 이 특징은 여러 조건들을 합쳐서 실행시키고 싶을 때 특별하게 사용하기도 합니다.
하지만 Go 언어에서는 break문을 넣든 넣지 않든 해당 case문만 실행하고 끝납니다. 만약 C언어에서 처럼 사용하려면 fallthrough 키워드를 사용합니다.
Tucker의 Go 언어 프로그래밍 참조.
책을 보면서 공부한 내용을 정리하면서 작성하는 글입니다. 따라서, 주제 하나를 많은 시간을 들여서 쓰지 않고, 간단하게 작성하는 것부터 시작해서, 계속 다듬어가면서 업데이트해 나갈 생각입니다. 참고하는 자료가 있을 때마다 출처를 적어 놓겠습니다.