清華尹成帶你實戰GO案例(54)Go 陣列

尹成發表於2018-05-22
Go 陣列
陣列是一個具有 相同資料型別 的元素組成的 固定長度 的 有序集合 。
在Go語言中,陣列是值型別,長度是型別的組成部分,也就是說" [10]int "和“ [20]int ”是完全不同
的兩種陣列型別。
同型別的兩個陣列支援"=="和"!="比較,但是不能比較大小。
陣列作為引數時,函式內部不改變陣列內部的值,除非是傳入陣列的指標。
陣列的指標:*[3]int
指標陣列:[2]*int
示例1:

package main
import "fmt"
func main() {
// 這裡我們建立了一個具有5個元素的整型陣列
// 元素的資料型別和陣列長度都是陣列的一部分
// 預設情況下,陣列元素都是零值
// 對於整數,零值就是0
var a [5]int
fmt.Println("emp:", a)
// 我們可以使用索引來設定陣列元素的值,就像這樣
// "array[index] = value" 或者使用索引來獲取元素值,
// 就像這樣"array[index]"
a[4] = 100
fmt.Println("set:", a)
fmt.Println("get:", a[4])
// 內建的len函式返回陣列的長度
fmt.Println("len:", len(a))
// 這種方法可以同時定義和初始化一個陣列
b := [5]int{1, 2, 3, 4, 5}
fmt.Println("dcl:", b)
// 陣列都是一維的,但是你可以把陣列的元素定義為一個陣列
// 來獲取多維陣列結構
var twoD [2][3]int
for i := 0; i < 2; i++ {
for j := 0; j < 3; j++ {
twoD[i][j] = i + j
}
}
fmt.Println("2d: ", twoD)
}


輸出結果為
emp: [0 0 0 0 0]
set: [0 0 0 0 100]
get: 100
len: 5
dcl: [1 2 3 4 5]
2d: [[0 1 2] [1 2 3]]
擁有固定長度 是陣列的一個特點,但是這個特點有時候會帶來很多不便,尤其在一個集合元素個數不固定
的情況下。這個時候我們更多地使用 切片 。
示例2:
可以用new建立陣列,並返回陣列的指標
package main
import "fmt"
func main() {
var a = new([5]int)
test(a)
fmt.Println(a, len(a))
}
func test(a *[5]int) {
a[1] = 5
}


輸出結果:
&[0 5 0 0 0] 5
示例3:
package main
import "fmt"
func main() {
a := [...]User{
{0, "User0"},
{8, "User8"},
}
b := [...]*User{
{0, "User0"},
{8, "User8"},
}
fmt.Println(a, len(a))
fmt.Println(b, len(b))
}
type User struct {
Id int
Name string
}


輸出結果:

[{0 User0} {8 User8}] 2

[0x1f216130 0x1f216140] 2





網址:http://www.qukuailianxueyuan.io/



欲領取造幣技術與全套虛擬機器資料

區塊鏈技術交流QQ群:756146052  備註:CSDN

尹成學院微信:備註:CSDN



網址:http://www.qukuailianxueyuan.io/



欲領取造幣技術與全套虛擬機器資料

區塊鏈技術交流QQ群:756146052  備註:CSDN

尹成學院微信:備註:CSDN

相關文章