这显然有效:// cast chan string to <-chan stringfunc RecOnly(c chan string) <-chan string { return c}func main() { a := make(chan string, 123) b := RecOnly(a) a <- "one" a <- "two" //b <- "beta" // compile error because of send to receive-only channel fmt.Println("a", <-a, "b", <-b)}但是有没有一个单线来做到这一点,而不声明一个新功能?
1 回答
aluckdog
TA贡献1847条经验 获得超7个赞
您可以将b的类型显式定义为仅接收通道并将其值设置为a。您还可以投射a到仅接收频道。从Go 规范:
通道可能被限制为只能发送或只能通过转换或分配接收。
func main() {
a := make(chan string, 123)
var b <-chan string = a // or, b := (<-chan string)(a)
a <- "one"
a <- "two"
//b <- "beta" // compile error because of send to receive-only channel
fmt.Println("a", <-a, "b", <-b)
}
- 1 回答
- 0 关注
- 154 浏览
添加回答
举报
0/150
提交
取消