为什么频道类型中包含"< - "?

dan*_*007 11 go

这有效.

var tick <-chan time.Time = time.Tick(1e8)
Run Code Online (Sandbox Code Playgroud)

但是,这不是.

var tick chan time.Time = time.Tick(1e8)
Run Code Online (Sandbox Code Playgroud)

为什么我需要<-一个频道的类型声明?我认为那<-是为了写一个频道或从一个频道阅读.为什么会出现在某种类型中?

nos*_*nos 19

通道可以具有指示它是只读,只读还是两者的类型.

指示通道方向是使用< - 作为类型的一部分或者为读/写通道省略.

所以<-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
Run Code Online (Sandbox Code Playgroud)

time.Tick(1e8)返回一个只读通道.

更多的语言规范在这里