go array陣列詳解

2021-10-03 11:53:35 字數 2959 閱讀 2325

golang array和以往認知的陣列有很大不同。

for i :=

0; i <

len(a)

; i++

for index, v :=

range a

全域性:

var arr0 [5]

int=[5

]int

var arr1 =[5

]int

var arr2 =

[...

]int

var str =[5

]string

區域性:a :=[3

]int

// 未初始化元素值為 0。

b :=

[...

]int

// 通過初始化值確定陣列長度。

c :=[5

]int

// 使用引號初始化元素。

d :=

[...

]struct

,// 可省略元素型別。

,// 別忘了最後一行的逗號。

}

**:

package main

import

("fmt"

)var arr0 [5]

int=[5

]int

var arr1 =[5

]int

var arr2 =

[...

]int

var str =[5

]string

func

main()

// 未初始化元素值為 0。

b :=

[...

]int

// 通過初始化值確定陣列長度。

c :=[5

]int

// 使用引號初始化元素。

d :=

[...

]struct

,// 可省略元素型別。

,// 別忘了最後一行的逗號。

} fmt.

println

(arr0, arr1, arr2, str)

fmt.

println

(a, b, c, d)

}輸出結果:[1

2300

][12

345]

[123

456]

[ hello world tom][1

20][

1234

][00

1000

200]

全域性

var arr0 [5]

[3]int

var arr1 [2]

[3]int=[

...][3

]int,}

區域性:a :=[2

][3]

int,

}b :=

[...][

2]int,,}

// 第 2 緯度不能用 "..."。

**:package main

import

("fmt"

)var arr0 [5]

[3]int

var arr1 [2]

[3]int=[

...][3

]int,}

func

main()

,}b :=

[...][

2]int,,}

// 第 2 緯度不能用 "..."。

fmt.

println

(arr0, arr1)

fmt.

println

(a, b)

}輸出結果:[[

000]

[000

][00

0][0

00][

000]

][[1

23][

789]

][[1

23][

456]

][[1

1][2

2][3

3]]

值拷貝行為會造成效能問題,通常會建議使用slice,或陣列指標。

package main

import

("fmt"

)func

test

(x [2]

int)

func

main()

fmt.

printf

("a: %p\n"

,&a)

test

(a) fmt.

println

(a)}

輸出結果:

a:0xc42007c010

x:0xc42007c030[0

0]

內建函式 len 和 cap 都返回陣列長度 (元素數量)。

package main

func

main()

println

(len

(a),

cap(a))}

輸出結果:

22

package main

import

("fmt"

)func

main()

,}for k1, v1 :=

range f

fmt.

println()

}}輸出結果:(0

,0)=

1(0,

1)=2

(0,2

)=3(

1,0)

=7(1

,1)=

8(1,

2)=9

go array和slice的區別

屬於集合類的型別,值都可以用來儲存某一種型別的值 或者說元素 陣列的長度固定,陣列是值型別 值型別有基本資料型別,結構體型別 slice的值長度可變,屬於引用型別 引用型別 字典型別,通道型別,函式型別 切片是引用傳遞,所以它們不需要使用額外的記憶體並且比使用陣列更有效率。如果傳遞的是引用型別,那麼...

樹狀陣列 詳解

對於普通陣列,其修改的時間複雜度位o 1 而求陣列中某一段的數值和的時間複雜度為o n 因此對於n的值過大的情況,普通陣列的時間複雜度我們是接受不了的。在此,我們引入了樹狀陣列的資料結構,它能在o logn 內對陣列的值進行修改和查詢某一段數值的和。假設a陣列為儲存原來的值得陣列,c為樹狀陣列。我們...

PHP 陣列詳解

陣列能夠在單個變數中儲存多個值 cars array volvo bmw toyota echo i like cars 0 cars 1 and cars 2 陣列是乙個能在單個變數中儲存多個值的特殊變數。如果您有乙個專案清單 例如 車名字的清單 將其儲存到單個變數中,如下所示 cars1 vol...