你的理解基本上是正确的。在 Go 中,slice 是一个引用类型,它包含了一个指向底层数组的指针、长度和容量。当你将一个 slice 作为参数传递给函数时,实际上是将 slice 的副本传递给函数,但是这个副本仍然指向相同的底层数组。 如果函数内部修改了 slice 的长度(例如使用 append 函数),那么会创建一个新的底层数组,并将原有的元素复制到新的数组中。这时,函数内部的 slice 和外部的 slice 将指向不同的底层数组。 如果函数内部只是修改了 slice 中的某个元素的值,而不改变长度,那么修改会影响到外部的 slice,因为它们共享同一个底层数组。 总结起来,当你传递一个 slice 给函数时,函数内部对 slice 的修改会影响到外部的 slice,除非函数内部改变了 slice 的长度。
1 2

相关推荐

1.先自我介绍一下2.好的,我看了一下,你说对大文件上传有一定的了解,那么你实习期间,大文件上传这块是如何实现的呢?3.那这个分配上传的逻辑都是由你开发的吗?还是说用了现有的文件上传的框架呢?4.有用过WebSocket相关的东西吗?5.WebSocket它是基于什么协议呢?6.TCP和UDP的区别可以介绍一下吗?7.TCP的可靠传输是如何保证的呢?8.介绍一下css样式,权重是如何计算的?9.你知道BFC这个概念吗?就是之前有了解吗?10.css的position属性有哪些值呢?11.除了绝对定位还有哪些定位?12.你知道固定定位和粘性定位的应用场景吗?13.如果从你的实习经历和项目中挑一个你觉得比较复杂的点来讲,你会选择讲哪一个呢?14.那么接下来我们来做一下笔试题(算法题-现场编程)15.mergePromise16.关于防抖和节流的一个算法题,题目不太记得了17.写个函数计算二叉树的最大宽度---------飞书的面试官真的是我见过最好最温柔的面试官了,我真的好多不会的,那个面试官小哥哥还一直给机会说给我换题目,尽量换我会的算法题,我实在不好意思说我不会写算法题(我没刷过),我说我只会伪代码,他还说没关系,给换了个二叉树的题目让说实现逻辑,搞得我都好愧疚,但凡他有一点点不耐烦,我也没有这么不好意思。---------面试官的建议:如果你想去大厂的话,你这个算法题是一定要刷的,因为前面那些口头问答,就是前面问的基础知识很难有区分度。一方面是基础题,一方面就是这些算法题。就是思路转换成代码,这个其实是我们比较看重的一个点。
点赞 评论 收藏
分享
牛客网
牛客企业服务