【Go】slice的一些使用技巧
原文链接:https://blog.thinkeridea.com/201901/go/slice_de_yi_xie_shi_yong_ji_qiao.html
slice
是 Go
语言十分重要的数据类型,它承载着很多使命,从语言层面来看是 Go
语言的内置数据类型,从数据结构来看是动态长度的顺序链表,由于 Go
不能直接操作内存(通过系统调用可以实现,但是语言本身并不支持),往往 slice
也可以用来帮助开发者申请大块内存实现缓冲、缓存等功能。
在 Go
语言项目中大量的使用 slice
, 我总结三年来对 slice
的一些操作技巧,以方便可以高效的使用 slice
, 并使用 slice
解决一些棘手的问题。
slice 的基本操作
先熟悉一些 slice
的基本的操作, 对最常规的 :
操作就可玩出很多花样。
s=ss[:]
引用一个切片或数组s=s[:0]
清空切片s=s[:10]
s=s[10:]
s=s[10:20]
截取接片s=ss[0:10:20]
从切片或数组引用指定长度和容量的切片
下标索引操作的一些误区 s[i:l:c]
i
是起始偏移的起始位置,l
是起始偏移的长度结束位置, l-i
就是新 slice
的长度, c
是起始偏移的容量结束位置,c-i
就是新 slice
的容量。其中 i
、l
、c
并不是当前 slice
的索引,而是引用底层数组相对当前 slice
起始位置的偏移量,所以是可超出当前 slice
的长度的, 但不能超出当前