관심있는 것들 정리

Golang 연습 7 (receive only channel) 본문

programming/Golang

Golang 연습 7 (receive only channel)

내공강화 2021. 1. 26. 10:03

receive only channel( <- chan 으로 방향성을 주어 생성, send only는 chan<- 가 된다)을 생성해서 값을 넣고 해당 채널을 다른 함수로 넘겨 값을 받도록 함

매번 하는 실수지만, channel 처리 시 반드시 go routine으로 처리해야함... 안 그러면 deadlock 발생했다는 에러가 남

package main

import (
	"fmt"
)

func getNum(numArray ...int) <-chan int {
	ch := make(chan int)
	go func() {
		for _, val := range numArray {
			ch <- val
		}
		close(ch)
	}()

	return ch
}

func printNum(ch <-chan int) {
	for val := range ch {
		fmt.Println(val)
	}
}

func main() {
	printNum(getNum(1, 2, 3, 4, 5))
}
반응형