栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

指针和切片参考类型-接收器

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

指针和切片参考类型-接收器

请参阅Go博客上的这篇文章。它详细解释了正在发生的事情,并完全回答了您的问题。

从“将切片 传递给函数 ”部分:

重要的是要理解,即使切片包含指针,它本身也是一个值。在幕后,它是一个结构值,包含一个指针和一个长度。它不是指向结构的指针。

结果,您需要一个指针接收器,或者如果要使用进行修改,则需要将切片作为值返回

append

如果您只想修改切片的内容,则只需按值传递切片:

即使分片标头按值传递,标头也包含指向数组元素的指针,因此原始分片标头和传递给函数的标头副本都描述了同一数组。因此,当函数返回时,可以通过原始slice变量看到修改后的元素。

随着

append
要修改的片段头部。和

因此,如果要编写修改标头的函数,则必须将其作为结果参数返回

要么:

让函数修改切片头的另一种方法是将指针传递给它。

您似乎也对指针的使用感到困惑。见规格:

对于类型T的操作数x,地址操作&x生成指向 T的类型 T的指针。

和:

对于指针类型 T的操作数x,指针间接 x表示x指向的类型T的变量。

因此,您的示例

*stack = append(*stack, x)
并不意味着您要传递指向的指针
append
,恰恰相反-
您要取消引用该指针以传递其指向的值。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/452368.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号