gopcp/example.v2

chanbase1.go 得到的结果与书上不符合

xiaoliwang opened this issue · 1 comments

书上的 chanbase1.go 的运行结果与实际运行结果(win10,go 1.8.1)不同。书上的结果 Sent: d[sender] 在实际运行时会出现在 Received: d之后。我想容易对读者出现困扰。是否可以在示例的
书上的 Sent :d 会在Received 之前出现。与实际运行结果不符合(win10 go 1.8,1)可以考虑在示例中

for {
            if elem, ok := <-strChan; ok {
                fmt.Println("Received:", elem, "[Receiver]")
                time.Sleep(time.Second) //这里
            } else {
                break
            }
        }

多加一个 time.Second 这样的话可以让读者更好地理解

恰恰无需添加这种语句。因为要体现Go的调度机制——“本身不保证各个goroutine运行的先后顺序”。我在书里也多次提到这一点,也说过读者运行程序得到的打印内容的先后顺序可能与书中展示的不同。