首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Golang的slice

slice对于golang来说那真的是一个非常常用的东西了,很多地方都会用到它,今天就来说说,slice底层是如何实现的,又有哪些坑是需要提前注意的。...type slice struct { array unsafe.Pointer len int cap int } 上面这个就是slice的结构,顺便说一下:slice的源码位置是: go.../src/runtime/slice.go 其中array是一个指针,指向底层的数组 len代表slice的长度 cap代表slice的容量 为什么会有长度和容量这个区分呢,这两个东西是用来干什么的呢?...slice的扩容 刚才提到的整个过程就是扩容的原因,那么slice究竟是如何进行扩容的呢?...slice作为参数进行传递的时候,还有slice进行append的时候注意一下,别的应该没有问题。总的来说slice的实现还是比较简单的。

35620

几个常见的 slice 错误

修复 解决办法很简单,从老 slice 拷贝一个新 slice,这样对老 slice 的修改就不会影响新 slice。...因为 append 之后会形成一个新的 slice,原 slice 不会变。 修复 将形参 slice,改成指针类型:*slice,并且将 append 之后得到的 slice 赋给这个指针。...因为循环变量只是 slice 元素的一个拷贝,修改循环变量并不能影响原来的 slice。 修复 想要修改原 slice,用切片下标来访问 slice 元素并做修改。...假如原 slice 的容量恰好够用,那么这些新创建的 slice 和最后创建出来的 slice 内容相同。...修复 明确指定长度来创建一个新 slice,并使用 copy 将原 slice 拷贝到新 slice。之后,将元素 append 到新 slice

37430
领券