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