通道是否通过引用隐式传递?
Go 之旅提供了一个通道示例,引发了有关其传递机制的问题。通过将通道传递到 sum 函数中,函数内对其所做的更改将持续存在,从而保留隐式引用传递的可能性。
说明
从技术上讲,通道传递时会被复制,因为 make 创建了有效充当指针的堆分配内存。但是,该指针并未公开,从而允许将通道视为引用类型。
规范阐明内置 make 函数返回 T 类型(而不是 *T)的值并初始化内存。当与通道一起使用时,make 会初始化通道并使其可用作引用类型。
含义
此行为意味着当您将使用 make 创建的通道传递给函数时,您可以读取和写入它们,而无需复制底层数据。
引用类型与值类型
以下类型通过引用传递转到:
数据数字、布尔值和结构体等类型在传递时会被复制转化为函数。
以上是Go 通道是按引用传递还是按值传递?的详细内容。更多信息请关注PHP中文网其他相关文章!