github.com/reapchain/go-reapchain@v0.2.15-0.20210609012950-9735c110c705/cmd/channel_sample/channel_sample.go (about) 1 package main 2 3 import "fmt" 4 5 func sum(a, b int ) <-chan int{ // 함수의 리턴값은 int형 받기 전용 채널 6 out := make(chan int) 7 go func(){ 8 out <- a + b 9 fmt.Printf("out=%x, %v\n", out, out ) //out 채널의 포인터만 출력 ? 10 }() 11 return out // 채널 변수 자체 리턴 12 } 13 14 func main() { 15 c := sum(1,2) // 채널을 리턴값을 받아서 c에 대입 16 //c는 <-chan int : int형 받기 전용 채널 17 fmt.Println( <- c ) // 3 : 채널에서 값을 꺼냄 18 19 ch := make(chan string, 1) //size 1 20 sendChan(ch) 21 receiveChan(ch) 22 } 23 func sendChan(ch chan<-string){ //채널에 값을 주기 24 ch <- "Data" // 채널의 buf에 [0]string 에 저장됨. 25 // x:= <-ch //에러 26 27 } 28 func receiveChan(ch <-chan string){ //<-채널,, 채널로 부터 값을 가져오기 29 data := <-ch 30 fmt.Println(data) 31 }