从数组创建通道



将数组的所有元素添加到通道的最简单方法是什么?

我可以这样做:

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

最新更新