// //go語言切片
// go語言切片是對陣列的抽象
// go 陣列的長度不可改變,在特定場景中這樣的集合就不太適用,go中提供了一種靈活,功能強悍的內建型別切片("動態陣列"),
// 與陣列相比切片的長度是不固定的,可以追加元素,在追加時可能使切片的容量增大。
//宣告乙個未指定大小的陣列來定義切片
var identifier type
//切片不需要說明長度 或者使用make()函式來建立切片
var slice1 type = make(type,len)
//也可以簡寫為
slice1 := make(type,len)
//也可以指定容量,其中capacity為可選引數
make(t,length,capacity)
//這裡的len是陣列的長度並且也是切片的初始長度
//切片初始化 (類似於oc中的可變陣列)
//直接初始化切片,表示是切片型別,初始化值依次為1,2,3 其cap = len = 3
s := int
//初始化切片s,是陣列arr的引用
s := arr[:]
//將arr從下標startindex到endindex-1 下的元素建立為乙個新的切片
s := arr[strarindex:endindex]
//預設endindex時將表示到arr的最後乙個元素
s := arr[startindex:]
//預設startindex時將表示從arr的第乙個元素開始
s :=arr[:endindex]
//通過切片s初始化切片s1
s1 := s[startindex:endindex]
//通過內建函式make()初始化切片s,int 標識為其元素型別為int的切片
s :=make(int,len,cap)
// //len() 和cap()函式
// //切片是可索引的,並且可以由len()方法獲取長度
// //切片提供了計算容量的方法cap()可以測量切片最長可以達到多少
package main
import "fmt"
func main()
printslice(numberscut)
//列印子切片從索引1(包含)到索引4(不包含)
fmt.println("numberscut[1:4] == ",numberscut[1:4])
//預設下限為0
fmt.println("numberscut[:3] == ",numberscut[:3])
//預設上限為len(s)
fmt.println("numberscut[:5] == ",numberscut[5:])
numbers1 :=make(int,0,5)
printslice(numbers1)
//列印子切片從索引0(包含)到索引2(不包含)
numbers2 :=numberscut[:2]
printslice(numbers2)
如果想增加切片的容量,我們必須建立乙個新的更大的切片並把原分片的內容都拷貝過來。
var numbers int
printslice(numbers)
//允許追加空切片
printslice(numbers)
//向切片新增乙個元素
printslice(numbers)
//同時新增多個元素
printslice(numbers)
//建立切片number1 是之前的2倍
numbers1 := make(int,len(numbers),(cap(numbers))*2)
//拷貝numbers的內容到number1
copy(numbers1,numbers)
printslice(numbers1)
go語言 切片
一 概述 low 陣列下標的起點 high 陣列下標的結束點 不包括此點 arr low arr high len 長度 high low cap 容量 max low 二 切片的長度與容量 package main import fmt func main slice arr 0 3 5 fmt....
Go語言 切片
因為陣列的長度是固定的並且陣列長度屬於型別的一部分,所以陣列有很多的侷限性。例如 func arraysum x 3 int int return sum 這個求和函式只能接受 3 int型別,其他的都不支援。再比如,a 3 int陣列a中已經有三個元素了,我們不能再繼續往陣列a中新增新元素了。切片...
go語言切片
切片 slice 是乙個擁有相同型別元素的可變長度的序列,他是基於陣列型別做的一層封裝,非常靈活,支援自動擴容。切片是乙個引用型別,他的內容結構包含位址 長度 容量。用於快速操作一塊資料集合。切片的本質 對底層陣列的封裝,包含三個資訊 底層陣列的指標 切片的長度 切片的容量。1.切片定義 var n...