golang 切片 擷取引數 簡介

2021-10-10 14:01:41 字數 1262 閱讀 7194

以 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...