golang 切片擷取引數方法詳解

2022-09-21 17:15:11 字數 1020 閱讀 1258

以 s := int為例

0. 建議:做slice擷取時建議用兩個引數,尤其是從底層陣列進行切片操作時,因為這樣在進行第一次append操作時,會給切片重新分配空間,這樣減少切片對陣列的影響。

1. 結論: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。

2. **

package main

import "fmt"

func main()

s = s[1:9:10]

fmt.println(s)

fmt.println(len(s))

fmt.println(cap(s))

}3. 執行結果

修改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=hifunwyfjbgh-low

s[low : high : max]

從切片s的索引位置low到high處所獲得的切片,len=high-low,cap=max-low

程式設計客棧

切片s的長度,總是

cap(s)

切片s的容量,=len(s)

golang 切片 擷取引數 簡介

以 s int為例 結論 s s low high max 切片的三個引數的切片擷取的意義為low為擷取的起始下標 含 high為擷取的結束下標 不含high max為切片保留的原切片的最大下標 不含max 即新切片從老切片的low下標元素開始,len high low,cap max low hi...

golang 切片多引數自定義排序

最近有個需求是要求對兩個字段進行排序,如果用sql就比較簡單 group by desc,但是效率會很低,所以在 內實現,直接上 taskid 降序排序 policyid公升序排序 type member struct type byidsort member func members byidso...

golang獲取命令列引數方法總結

package main import fmt os func main 生成並執行 go build o main.exe main.go main.exe 小李 18歲 程式設計師結果 命令列引數數量 4 第二個引數 小李 args 0 main.exe args 1 小李 args 2 18歲...