Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Archives
Today
Total
관리 메뉴

Code Habit

[Go언어] range 사용 본문

카테고리 없음

[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()에서의 대기를 빠져나온다.