Go語言切片

2021-07-24 11:48:50 字數 1934 閱讀 9178

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