首页 > 后端开发 > Golang > 正文

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

Mary-Kate Olsen
发布: 2024-11-17 18:46:02
原创
681 人浏览过

Are Go Channels Passed by Reference or Value?

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

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

说明

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

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

含义

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

引用类型与值类型

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

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

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

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板