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 공유는 허용합니다.

Published

01 June 2015