这行得通。var tick <-chan time.Time = time.Tick(1e8)但是,事实并非如此。var tick chan time.Time = time.Tick(1e8)为什么<-在我的类型声明中需要一个通道?我认为这<-是为了写入或读取频道。为什么会以某种类型出现?
3 回答
慕斯王
TA贡献1864条经验 获得超2个赞
通道可以具有指示其是只读,只写还是两者兼有的类型。
用<-作为类型的一部分来指示通道方向,或者对于读/写通道省略该指示。
所以<-
in<-chan time.Time
是该类型的一部分,
chan time.Time //Would be a read/writable channel chan<- time.Time // Would be a write only channel <-chan time.Time // Would be a read only channel
并time.Tick(1e8)
返回一个只读通道。
在此处阅读语言规范中的更多内容
牛魔王的故事
TA贡献1830条经验 获得超3个赞
尽管可以声明一个实际的“只读”或“仅写”通道变量,但这样做是没有用的,因为您不能对它们进行任何操作。
“只读”和“仅写”语法适用于功能参数。这种语法更像是C中的“ const”或Ada中的“ in”和“ out”。
Go频道也没有两个“终点”。UNIX管道有两个文件描述符,每个末端都有一个。通道类型的相同变量用于读取和写入。
- 3 回答
- 0 关注
- 296 浏览
添加回答
举报
0/150
提交
取消