【发布时间】:2021-03-10 20:50:32
【问题描述】:
此代码是 the-way-to-go 的形式,我对频道的示例感到困惑。为什么for循环后的语句不可达,为什么当ch为空时func getData没有panic完成?
package main
import (
"fmt"
"time"
)
func main() {
ch := make(chan string)
go sendData(ch)
go getData(ch)
time.Sleep(1e9)
}
func sendData(ch chan string) {
ch <- "Washington"
ch <- "Tripoli"
ch <- "London"
ch <- "Beijing"
ch <- "Tokio"
}
func getData(ch chan string) {
var input string
// time.Sleep(2e9)
for {
input = <-ch
fmt.Printf("%s ", input)
}
fmt.Printf("finished") // unreachable, why???
}
和输出:
./prog.go:32:5: unreachable code
Go vet exited.
Washington Tripoli London Beijing Tokio
Program exited.
【问题讨论】: