你能读到一个goroutine频道吗?这个频道在这个陈述中的位置在哪里?
go func() {
<-ctx.Done()
logger.Errorf("canceled: %v", ctx.Err())
}()
增加:
此代码与使用空白标识符
时的代码有何不同go func() {
_ = <-ctx.Done()
logger.Errorf("canceled: %v", ctx.Err())
}()
答案 0 :(得分:6)
是的,你可以这样做。
它不需要去任何地方。
Done
频道的目的通常只是发出完成事件的信号,因此该值不相关且可以忽略。
与调用函数时相同,不要将返回值赋给变量。
考虑一下:
func getInt() int {
return 1
}
func main() {
getInt() // does not "go anywhere"
}
参见这个展示这些例子的游乐场: