봐는 결과 나는 빈 출력을 가지고와 time.After에 도달하지 않을 수있는 바와 같이, 다음 코드에서
package main
import (
"fmt"
"time"
)
func sender(ch chan string) {
ch <- "Hello"
ch <- "Foo"
ch <- "and"
ch <- "Boo"
close(ch)
}
func main() {
ch := make(chan string)
go sender(ch)
for {
select {
case value := <-ch:
fmt.Println(value)
case <-time.After(time.Second * 2):
fmt.Println("Return")
return
}
}
}
스 니펫. 왜?
닫힌 채널에서 값을 받으려고하면 해당 유형에서 0 값이 수신됩니다. 닫힌 채널에서 계속 가치를 얻을 수있는 이유는 무엇입니까?
v, ok := <-ch
확인이 거짓이면 내가 너무 좋아도 확인할 수 있습니다
는 채널이 닫혀 있습니다.
내 프로그램은'송신기에서 전송 단어() '기능을 인쇄하고 그'string'의 값이 0 인 빈 라인 인쇄 유지 한 후,이 제로 값을 반환 . 'close (ch)'를 제거하고 어떤 일이 일어나는지보십시오. – icza