gpt4 book ai didi

go - 将 slice 的所有项目添加到 channel 中

转载 作者:IT王子 更新时间:2023-10-29 01:48:36 25 4
gpt4 key购买 nike

在 Go 中,是否有比以下方法更惯用的方法将数组/slice 的所有元素添加到 channel 中?

ch := make(chan string)
values := []string{"lol", "cat", "lolcat"}

go func() {
for _, v := range values {
ch <- v
}
}()

我正在寻找类似 ch <- values... 的内容但这被编译器拒绝了。

最佳答案

直到 iterators会出现的,是的,您编写的代码非常地道。我将它打包以便在我处理的代码库中像这样重用:

// ToChan returns a channel containing all elements in the slice s.
// The channel is closed when all elements are consumed from the channel.
func ToChan[T any](s []T) <-chan T {
ch := make(chan T, len(s))
for _, e := range s {
ch <- e
}
close(ch)
return ch
}

https://go.dev/play/p/c5v4df_M1IG

关于go - 将 slice 的所有项目添加到 channel 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32970224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com