通道上的 cap() 不是恒定的?

zzn*_*zzn 3 go

ch := make(chan int, 10)
fmt.Println(cap(ch))
Run Code Online (Sandbox Code Playgroud)

函数调用是cap(ch) 常量还是求值

golang 规范 说:

如果 s 是字符串常量,则表达式 len(s) 是常量。如果 s 的类型是数组或指向数组的指针,并且表达式 s 不包含通道接收或(非常量)函数调用,则表达式 len(s) 和 cap(s) 是常量;在这种情况下,不评估 s。否则,len 和 cap 的调用不是常量,并且 s 会被求值。

看来是评价了

fuz*_*fuz 7

是的,cap()当应用于通道时,它不是恒定的,因为通道的容量没有编码在类型中,因此在编译时是未知的。