将数组的所有元素添加到通道的最简单方法是什么?
我可以这样做:
elms := [3]int{1, 2, 3}
c := make(chan int, 3)
for _, e := range elms {
c <- e
}
但我想知道这是否有语法糖。
代码应该是正确的、可维护的、健壮的、合理的效率,最重要的是,可读性。
根据设计,Go 很简单,但功能强大。每个人都可以阅读和记忆规范:Go 编程语言规范。你可以在一天左右的时间里学会围棋。简单性使 Go 代码非常可读。
句法糖的复杂性会导致认知超负荷。在与Bjarne Stroustrup(C++(和Guido van Rossum(Python(一起工作后,Go的作者故意避免使用句法糖。
阅读Bjarne Stroustrup最近对C++复杂性的哀叹:记住Vasa!。
很容易看出这段代码的作用:
package main
func main() {
elms := [3]int{1, 2, 3}
c := make(chan int, len(elms))
for _, elm := range elms {
c <- elm
}
}
在通道上的 Golang 规范中,它被定义为:-
单个通道可用于发送语句、接收操作、 并通过任意数量的 无需进一步同步的 goroutines。
还有一种方法可以将完整的切片或数组分配给通道,如下所示:
func main() {
c := make(chan [3]int)
elms := [3]int{1, 2, 3}
go func() {
c <- elms
}()
for _, i := range <-c {
fmt.Println(i)
}
}
在Go Playground上查看工作示例
有关频道的信息,请查看此链接 https://dave.cheney.net/tag/golang-3