首页  >  文章  >  后端开发  >  Go 通道是按引用传递还是按值传递?

Go 通道是按引用传递还是按值传递?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-17 18:46:02682浏览

Are Go Channels Passed by Reference or Value?

通道是否通过引用隐式传递?

Go 之旅提供了一个通道示例,引发了有关其传递机制的问题。通过将通道传递到 sum 函数中,函数内对其所做的更改将持续存在,从而保留隐式引用传递的可能性。

说明

从技术上讲,通道传递时会被复制,因为 make 创建了有效充当指针的堆分配内存。但是,该指针并未公开,从而允许将通道视为引用类型。

规范阐明内置 make 函数返回 T 类型(而不是 *T)的值并初始化内存。当与通道一起使用时,make 会初始化通道并使其可用作引用类型。

含义

此行为意味着当您将使用 make 创建的通道传递给函数时,您可以读取和写入它们,而无需复制底层数据。

引用类型与值类型

以下类型通过引用传递转到:

  • 切片
  • 地图
  • 频道
  • 指针
  • 函数

数据数字、布尔值和结构体等类型在传递时会被复制转化为函数。

以上是Go 通道是按引用传递还是按值传递?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn