카테고리 없음
[Go언어] range 사용
코드베어
2022. 11. 20. 14:35
for 반복문에서 range 키워드를 이용하여 배열/슬라이스 요소를 순회할 수 있다.
func main() {
var t []int = [5]int{1, 2, 3, 4, 5}
for i, v = range t { // i : index( 0 ~ 4 ), v : value( 1 ~ 5 )
fmt.Println(i, v)
}
}
for range 구문을 사용하여 채널에서 데이터를 계속 기다릴 수 있다.
func main() {
var wg sync.WaitGroup
wg.Add(1)
ch := make(chan int)
go func() {
defer wg.Done()
for n := range ch { // ch에 값이 들어올때까지 대기, 채널을 닫으면 (close(ch)) for 구문을 빠져나온다.
fmt.Println(n)
time.Sleep(time.Second)
}
}()
for i := 0; i < 10; i++ {
ch <- i
}
close(ch) // 채널을 닫으면 대기하던 for range 구문을 빠져나온다
wg.Wait() // go 함수안의 wg.Done()이 호출될 때까지 대기
}
채널(ch)에 0~9까지의 숫자를 넣고 go 함수안에서 이를 for range구문을 통해 받아 출력한다. close(ch)를 통해 채널을 닫고 for range 구문을 빠져나온다. go 함수가 종료될때 wg.Done()을 호출하면서 main 함수 안의 wg.Wait()에서의 대기를 빠져나온다.