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 | 29 | 30 | 31 |
Tags
- range
- bitcoin
- Python
- FOR
- Sync
- API
- 책
- json
- mutex
- Linux
- window
- tcp
- write
- 리뷰
- go언어
- Callback
- C
- package
- channel
- JavaScript
- GO 언어
- c++
- File
- windows
- Golang
- go
- 영화
- http
- Close
- install
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()에서의 대기를 빠져나온다.