[Go] Default Selection

윤동환·2023년 7월 4일
0

Go

목록 보기
8/18
post-thumbnail

default 키워드

select에서 default 값이 준비되지 않았을 때 실행됩니다. 다른 언어의 switch구문과 매우 유사합니다.

간단한 구문

select {
case i := <-c:
    // use i
default:
    // c로부터 값을 받아오는 것이 block된 경우
}

예제

package main

import (
	"fmt"
	"time"
)

func main() {
	tick := time.Tick(100 * time.Millisecond) //일정 주기마다 시간으로 값 초기화
	boom := time.After(500 * time.Millisecond) //해당 시간 경과시 초기화
	for {
		select {
		case <-tick:
			fmt.Println("tick.")
		case <-boom:
			fmt.Println("BOOM!")
			return
		default:
			fmt.Println("    .")
			time.Sleep(50 * time.Millisecond)
		}
	}
}

결과

Tick, After 값 확인해보기

package main

import (
	"fmt"
	"time"
)

func main() {
	tick := time.Tick(100 * time.Millisecond)
	boom := time.After(500 * time.Millisecond)
	for {
		select {
		case c := <-tick:
			fmt.Println(c, "tick.")
		case d := <-boom:
			fmt.Println(d, "BOOM!")
			return
		default:
			fmt.Println("    .")
			time.Sleep(50 * time.Millisecond)
		}
	}
}

결과

profile
모르면 공부하고 알게되면 공유하는 개발자

0개의 댓글