go陣列與切片

2021-08-30 09:03:27 字數 2261 閱讀 8192

go陣列

陣列宣告:var variable_name [size] variable_type eg:var balance [10] float32

陣列初始化:var balance = [5]float32

初始化陣列中 {} 中的元素個數不能大於 中的數字。

如果忽略 中的數字不設定陣列大小,go 語言會根據元素的個數來設定陣列的大小:

var balance = […]float32

訪問陣列元素:

陣列元素可以通過索引(位置)來讀取。格式為陣列名後加中括號,中括號中為索引的值。

var salary float32 = balance[9]以上例項讀取了陣列balance第10個元素的值。

go切片

go 語言切片是對陣列的抽象。

go 陣列的長度不可改變,在特定場景中這樣的集合就不太適用,go中提供了一種靈活,功能強悍的內建型別切片(「動態陣列」),與陣列相比切片的長度是不固定的,可以追加元素,在追加時可能使切片的容量增大。

切片宣告:var identifier type 切片不需要說明長度。

或使用make()函式來建立切片:var slice1 type = make(type, len)也可以簡寫為slice1 := make(type, len),宣告時指定容量:make(t, length, capacity)。

切片初始化:s := int 直接初始化,s := arr[:] 對arr的引用,s := arr[startindex:endindex] 將arr中從下標startindex到endindex-1 下的元素建立為乙個新的切片,s := arr[startindex:] 預設endindex時將表示一直到arr的最後乙個元素,s := arr[:endindex] 預設startindex時將表示從arr的第乙個元素開始,s1 := s[startindex:endindex] 通過切片s初始化切片s1,s:=make(int,len,cap) ,通過內建函式make()初始化切片s,int 標識為其元素型別為int的切片。

len()和cap()

切片是可索引的,並且可以由 len() 方法獲取長度。

切片提供了計算容量的方法 cap() 可以測量切片最長可以達到多少。

乙個切片在未初始化之前預設為 nil,長度為 0

package main

import 「fmt」

func main()

}func printslice(x int)

切片擷取:

package main

import 「fmt」

func main()

printslice(numbers)

/* 列印原始切片 */

fmt.println(「numbers ==」, numbers)

/* 列印子切片從索引1(包含) 到索引4(不包含)*/

fmt.println(「numbers[1:4] ==」, numbers[1:4])

/* 預設下限為 0*/

fmt.println(「numbers[:3] ==」, numbers[:3])

/* 預設上限為 len(s)*/

fmt.println(「numbers[4:] ==」, numbers[4:])

numbers1 := make(int,0,5)

printslice(numbers1)

/* 列印子切片從索引 0(包含) 到索引 2(不包含) */

number2 := numbers[:2]

printslice(number2)

/* 列印子切片從索引 2(包含) 到索引 5(不包含) */

number3 := numbers[2:5]

printslice(number3)

import 「fmt」

func main()

func printslice(x int)

len=9 cap=9 slice=[0 1 2 3 4 5 6 7 8]

numbers == [0 1 2 3 4 5 6 7 8]

len=3 cap=8 slice=[1 2 3]

numbers[:3] == [0 1 2]

len=5 cap=5 slice=[4 5 6 7 8]

len=0 cap=5 slice=

len=2 cap=9 slice=[0 1]

我們可以看出切片,實際的是獲取陣列的某一部分,len切片<=cap切片<=len陣列,切片由三部分組成:指向底層陣列的指標、len、cap。

go陣列與切片

陣列是具有相同唯一型別的一組長度固定的資料項序列,這種型別可以是任意的原始型別,例如整形,字元型或者自定義型別。陣列長度必須是乙個常量的表示式,並且是乙個非負整數。陣列元素可以用個索引累讀取,陣列長度最大為2gb。宣告格式為 var identifier len type 複製 例如 var arr...

GO 陣列與切片

var 變數名 陣列的容量 型別 陣列的容量 型別 var a 4 int 4 int 或者var a 4 int 或者a 4 int 這幾個的結果為 1 2 3 0 接受長度有賦值的長度決定 package main import fmt func main a int 但是無法使用var a i...

go陣列 切片

陣列 陣列指標 fmt.println 陣列指標 i int var p 10 int i fmt.println p fmt.println p x,y 1,2 j int fmt.println j k 2 int l 2 int fmt.println k l 指向陣列的指標 m new 5 ...