Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- bitcoin
- package
- range
- channel
- write
- http
- JavaScript
- go
- C
- FOR
- 리뷰
- GO 언어
- 책
- mutex
- Golang
- go언어
- Close
- json
- install
- tcp
- 영화
- Callback
- window
- Python
- Sync
- File
- c++
- Linux
- windows
- API
Archives
- Today
- Total
Code Habit
[Go언어] range 사용 본문
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()에서의 대기를 빠져나온다.