[Golang]slice的用法以及和数组的区别
生活随笔
收集整理的這篇文章主要介紹了
[Golang]slice的用法以及和数组的区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
說明
slice是go的一個語言特性,其實有點類似于cpp的vector,可變長度,可以擴展空間。今天詳細看了下,做下總結。
slice本質上是一個區間,原型是[]T,大致的實現是這樣的:
可以看到的是是一個指向數組的指針,那么在修改slice的時候會改變數組的值。
用法
和數組的用法差別不是太大。
- 基于數組的創建:
- 直接創建:
- 函數
len() 返回元素的個數
cap()返回容器大小
append()新增元素
copy()深復制slice
slice1 := []int{1, 2, 3, 4, 5} slice2 := []int{1, 2, 3} copy(slice2, slice1)//copy slice的前3個元素到slice2 slice2 = slice1 //會復制一份引用給slice2- 和數組區別
可以看到的是數組傳的是值,不會改變元素的值,這一點和c/cpp不同,而雖然slice也是值語義,但是其本身是指針類型的,所以會改變值,但不意味著slice傳引用,這一點需要注意。后面會詳細講值語義帶來的問題。
擴展閱讀:
https://blog.csdn.net/bobodem/article/details/80188126
總結
以上是生活随笔為你收集整理的[Golang]slice的用法以及和数组的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 得习惯性流产是怎么回事
- 下一篇: [Golang]slice值传递存在的问