GO语言中的切片实际上是一种结构,其运行时的结构如下:
这个非常重要。这意味着,将切片用作函数参数时,其传输机制与结构传输机制相同,即值传输,即传递原始切片的副本。
另一个非常重要的一点是,切片结构中的数组是指针,这意味着数组的值是基础数组的地址。通过函数后,此值没有更改。
因此,可以看出,当切片作为函数参数传递时,在函数中的切片上执行了一些修改操作,这将影响函数之外的原始切片。
首先查看段落:
问题:
回答:
上面的栗子和栗子之间的唯一区别是,在功能体中,切片添加了一个apend操作
那么问题是:
最后,我想说的是,如果您确定写作的功能需要修改影响功能外部片段的切片,那么您的函数参数应使用指针。
希望您现在可以清楚地回答以下问题
问题:
添加一个小问题:
代码中两行的两行之间有什么区别?
:对于切片,使用格式输出时,如果未在前面添加地址,则打印了切片中第一个元素的地址;如果添加了地址
原始:https://juejin.cn/post/7096055555511658526