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

Cost of writing data to a go lang channel?

我有一个 list (containers/list) 包含一个 []string。我经常通过一个频道发送这个。我正在尝试了解这种沟通的成本。一般情况下,发送数据的浅表副本是否被复制到缓冲区,然后在接收时在另一端重新复制?那么发送和接收并不比浅拷贝更昂贵?一般来说有一些陷阱吗?

值被复制到频道和从频道中复制。如果您要发送 container/list,则发送 a struct with two fields is copied。不复制列表元素。

这是一个浅拷贝。

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