在 Go 中,是否有比以下更惯用的方法将数组/切片的所有元素添加到通道中?
ch := make(chan string)
values := []string{"lol", "cat", "lolcat"}
go func() {
for _, v := range values {
ch <- v
}
}()
我正在寻找类似的东西ch <- values...
但这被编译器拒绝了。
Until 迭代器 https://github.com/golang/go/discussions/54245会出现的,是的,你写的代码是很惯用的。我将其打包以供重用,在我工作的代码库中如下所示:
// 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 https://go.dev/play/p/c5v4df_M1IG
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)