일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 리뷰
- mutex
- C
- 영화
- c++
- JavaScript
- Python
- channel
- go언어
- json
- package
- Sync
- 책
- bitcoin
- Callback
- GO 언어
- windows
- http
- tcp
- API
- window
- write
- Close
- go
- File
- range
- Linux
- Golang
- FOR
- install
- Today
- Total
목록channel (5)
Code Habit
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..
보내기 전용 채널과 받기 전용 채널은 값의 흐름이 한 방향으로 고정된 채널이다. 보내기 전용( send-only ): chan
채널에 값이 몇 개나 들어올지 모르기 때문에 값이 들어올 때마다 계속 꺼내기 위해 range를 사용할 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 package main import ( "fmt" "runtime" ) func main() { runtime.GOMAXPROCS(1) c:= make(chan int) // int 형 채널 생성 go func() { for i := 0; i
채널에 버퍼 개수를 지정할 수 있다. 이를 채널 버퍼링이라 한다. make(chan 자료형, 버퍼개수) 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 package main import ( "fmt" "runtime" ) func main() { runtime.GOMAXPROCS(1) done := make(chan bool, 3) // 버퍼가 2개인 비동기 채널 생성 count := 20 // 반복할 횟수 go func() { for i:=0; i