将数据写入 go lang 通道的成本?

div*_*ero 3 go channels

我有一个list( containers/list) 包含一个[]string. 我经常通过频道发送这个。我试图了解这种通信的成本有多高。一般情况是在发送时将正在发送的数据的浅拷贝复制到缓冲区,然后在接收时在另一侧重新复制吗?那么发送和接收并不比浅拷贝更昂贵?一般有一些问题吗?

Cer*_*món 5

该值被复制到通道或从通道复制。如果您要发送容器/列表,则复制具有两个字段的结构体。不复制列表元素。

这是一个浅拷贝。

问题在于应用程序必须确保只有一个 goroutine 修改列表元素。