go語言筆記(陣列 切片)

2021-10-12 10:25:09 字數 2467 閱讀 7970

var a[4]

int//定義長度為4,型別為int的陣列,沒有初始化時就是預設值

b:=[4

]int

//定義的時候同時初值化

c:=[4

]int

//通過索引指定初始化

d:=[...

]int

//可以不定義陣列的長度,但是要初始化

fmt.

println

(a,b,c,d)

//執行結果:

//[0 0 0 0] [1 2 3 4] [2 0 0 5] [1 2 3]

type user struct

e:=[...

]user,,

} fmt.

println

(e)//執行結果:

//[ ]

e:=

[...][

2]int,,}

fmt.

println

(e)//執行結果

//[[90 90] [33 76]]

var b,a[4]

int

fmt.

println

(a==b)

fmt.

println

(a!=b)

//執行結果

/*true

false*/

x,y:=10,

2a:=

[...]*

intfmt.

println

(a)//執行結果

//[0xc0000a2058 0xc0000a2070]

a:=

[...

]int

p:=&a //獲取陣列的位址

p[1]+=

10 fmt.

println

(p[1])

//執行結果

//12

a:=

[...

]int

fmt.

println

(a[:8]

) fmt.

println

(a[5:7

])fmt.

println

(a[5:]

)//執行結果

/*[1 2 3 4 5 6 7 8]

[6 7]

[6 7 8 9 10]

*/

a:=

make([

]int,3

,5)//3是切片的長度,5是切片的容量

b:=make([

]int,3

)//若沒有定義切片的容量,預設和切片的長度一樣

fmt.

println

(a,len

(a),

cap(a)

) fmt.

println

(a,len

(b),

cap(b)

)//執行結果

/*[0 0 0] 3 5

[0 0 0] 3 3*/

b:=[4

]int

a:= b[1:

4]a=(a,5)

fmt.

println

(a)/*

執行結果:

[2 3 4 5]*/

b:=[4

]int

a:= b[1:

4]c:= b[1:

2]a=(a,c...

) fmt.

println

(a)/*

執行結果:

[2 3 4 2]*/

a :=

int b :=

make([

]int,3

)copy

(b, a)

fmt.

println

(a) fmt.

println

(b)/*

執行結果:

[1 2 3]

[1 2 3]*/

//若宣告b切片時,其長度比a切片長,多出來的長度的值取預設值

b :=

make([

]int,4

)//執行結果

//[1 2 3 0]

//若宣告b切片時,其長度比a切片短

b :=

make([

]int,2

)//[1 2]

//宣告b切片時,其長度被定義為0

b :=

make([

]int,0

)//

Go學習筆記 陣列和切片

陣列型別的值 以下簡稱陣列 的長度是固定的,而切片型別的值 以下簡稱切片 是可變長的。陣列的長度在宣告它的時候就必須給定,並且在之後不會再改變。可以說,陣列的長度是其型別的一部分。go 語言的切片型別屬於引用型別,同屬引用型別的還有後面會講到的字典型別 通道型別 函式型別等 而 go 語言的陣列型別...

Go學習筆記 陣列和切片

陣列 陣列是具有相同唯一型別的一組已編號且長度固定的資料項序列 同構的資料結構 這種型別可以是任意的原始型別,例如整型 字串或者自定義型別。陣列長度必須是乙個常量表示式,並且必須是乙個非負整數。陣列成都也是陣列型別的一部分,所以 5 int和 10 int是屬於不同型別的。陣列是一種值型別。陣列的編...

go 語言的陣列切片

建立陣列切片兩種方法 第一種是基與陣列,第二種是直接建立 1.第一種如下 定義乙個陣列 var myarray 10 int 10 int 基與myarray的前5個元素建立陣列切片 myslice myarray 5 基與從第5個元素開始的所有元素建立陣列切片 myslice myarray 5 ...