以 s := int為例
結論:s = s[low : high : max] 切片的三個引數的切片擷取的意義為low為擷取的起始下標(含), high為擷取的結束下標(不含high),max為切片保留的原切片的最大下標(不含max);即新切片從老切片的low下標元素開始,len = high - low, cap = max - low;high 和 max一旦超出在老切片中越界,就會發生runtime err,slice out of range。另外如果省略第三個引數的時候,第三個引數預設和第二個引數相同,即len = cap。
**:
package main
import "fmt"
func main()
s = s[1:9:10]
fmt.println(s)
fmt.println(len(s))
fmt.println(cap(s))
}
執行結果
修改max值,越界錯誤截圖
其他一些操作例項:
操作
含義
s[n]
切片s中索引位置為n的項
s[:]
從切片s的索引位置0到len(s)-1處所獲得的切片
s[low:]
從切片s的索引位置low到len(s)-1處所獲得的切片
s[:high]
從切片s的索引位置0到high處所獲得的切片,len=high
s[low:high]
從切片s的索引位置low到high處所獲得的切片,len=high-low
s[low : high : max]
從切片s的索引位置low到high處所獲得的切片,len=high-low,cap=max-low
len(s)
切片s的長度,總是<=cap(s)
cap(s)
切片s的容量,總是》=len(s)
golang 切片擷取引數方法詳解
以 s int為例 0.建議 做slice擷取時建議用兩個引數,尤其是從底層陣列進行切片操作時,因為這樣在進行第一次append操作時,會給切片重新分配空間,這樣減少切片對陣列的影響。1.結論 s s low high max 切片的三個引數的切片擷取的意義為 low為擷取的起始下標 含 high為...
golang陣列,切片
陣列 同一種資料型別的固定長度序列 陣列的定義 var a len int 比如 var a 5 int 長度是陣列型別的一部分,因此,var a 5 int 和 var a 10 int 是不同的型別 陣列的初始化 func chushi var age1 5 int var age2 int v...
golang 切片學習
package main 這裡只說些自己理解的,當然切片的操作遠遠不止這些。import fmt reflect 學習切片首先要明白len和cap的區別。len 是儲存資料多少,cap 是容量大小。舉個例子乙個大會堂可以容納1000人這是cap,但是實際裡面隻座了100人這是len func mai...