저작권 안내
- 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
- 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.
switch 분기문 사용하기
이재홍 http://www.pyrasis.com 2014.12.17 ~ 2015.02.07
조건식으로 분기하기
switch 키워드 다음에 판별할 변수를 지정하지 않고 case에서 조건식만으로 문장을 실행할 수도 있습니다. 즉 C, C++에서는 case에서 숫자나 열거형 값만 사용할 수 있었지만 Go 언어에서는 조건식도 사용할 수 있습니다.
- case 조건식:
i := 7
switch { // case에 조건식을 지정했으므로 판단할 변수는 생략
case i >= 5 && i < 10: // i가 5보다 크거나 같으면서 10보다 작을 때
fmt.Println("5 이상, 10 미만")
case i >= 0 && i < 5: // i가 0보다 크거나 같으면서 5보다 작을 때
fmt.Println("0 이상, 5 미만")
}
실행 결과
5 이상, 10 미만
switch 분기문 안에서 함수를 실행하고 결괏값으로 분기를 할 수 있습니다. 이때는 함수를 호출하고 뒤에 ;
(세미콜론)을 붙여줍니다. 또한, case에서는 값으로 분기할 수 없고 조건식만 사용할 수 있습니다.
- math/rand: 무작위(랜덤) 패키지입니다.
- Seed: 시드 값을 설정하는 함수입니다. 여기서는 time 패키지를 사용하여 현재 시간을 설정하였습니다.
- Intn: 랜덤 값을 생성합니다. 랜덤 값의 범위는 0부터 매개변수로 설정한 값까지 입니다.
- time: 시간 패키지입니다.
- Now: 현재 시간을 구하는 함수입니다.
- UnixNano: 유닉스 시간을 나노 초 단위로 리턴합니다.
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
rand.Seed(time.Now().UnixNano()) // 현재 시간으로 Seed 값 설정
switch i := rand.Intn(10); { // rand.Intn 함수를 실행한 뒤 i에 대입
case i >= 3 && i < 6: // i가 3보다 크거나 같으면서 6보다 작을 때
fmt.Println("3 이상, 6 미만") // 코드 실행
case i == 9: // i가 9일 때
fmt.Println("9") // 코드 실행
default: // 모든 case에 해당하지 않을 때
fmt.Println(i) // 코드 실행
}
}
i에는 랜덤 값이 들어가므로 출력 결과는 매번 달라질 것입니다.
저작권 안내
이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.- 블로그, 게시판 등에 퍼가는 것을 금지합니다.
- 비공개 포스트에 퍼가는 것을 금지합니다.
- 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
- 링크 및 SNS 공유는 허용합니다.