Golang基礎 資料結構 陣列(array)

2021-10-10 01:29:33 字數 2446 閱讀 6016

var 變數名[元素數量(長度)]元素型別

例如:

var a [5]

intvar b [4]

int

注意

1.陣列是多個相同型別資料的組合,乙個組合一旦宣告或定義,其長度是固定的,不能動態變化

2.陣列中的元素可以是任何資料型別,包括值型別和引用型別,但是不可以混用

3.建立後,如果沒有賦值,預設零值

4.使用步驟:1.宣告陣列並開闢空間 2.賦值 3.使用

var a [5]

int//不給值 預設初始化為int型別的零值

var b =[3

]int

//此時陣列為 [1 2 0] 沒有給指定值用該元素型別的零值填充

var c =

[...

]int

// [1 2] 自行判斷陣列長度長度用...

var d =

[...

]int

//[0 2 0 0 5] 通過指定索引值來初始化

常見遍歷方式

func

main()

// 遍歷1 for迴圈

for i :=

0; i <

len(arr)

; i++

// 2

// 4

// 6

// 8

// 10

// for-range

// 遍歷2(常用)

for i :=

range arr

// 2

// 4

// 6

// 8

// 10

// 遍歷3 索引 值

for i, v :=

range arr

// 0 2

// 1 4

// 2 6

// 3 8

// 4 10

for_

, v :=

range arr3

// 2

// 4

// 6

// 8

// 10

}

指在陣列中去巢狀陣列

以二維陣列為例

func

main()

fmt.

println()

}// 0 0 0 0 0 0

// 0 0 1 0 0 0

// 0 2 0 3 0 0

// 0 0 0 0 0 0

}

注意多維陣列只有第一層可以用… 來推導陣列長度

賦值和傳參會複製整個陣列。因此改變副本的值,不會改變本身的值。

arr :=[3

]int

arr[0]

=88fmt.

println

(arr)

// 輸出 [12 23 45]

在其他函式中需要修改陣列,可以用引用傳遞(指標)實現

arr :=[3

]int

(*arr)[0

]=88 fmt.

println

(arr)

// 輸出 [88 23 45]

// 案例1 建立乙個byte型別的26個元素的陣列,分別放置『a』-『z』.使用for迴圈訪問所有元素並列印出來

func

demo1()

for i :=

0; i <

26; i++

}// 案例2 求出乙個陣列的最大值並得到對應的下標

func

demo2()

maxval := intarr[0]

maxvalindex :=

0for i :=

1; i <

len(intarr)

; i++

} fmt.

printf

("maxval=%v maxvalindex=%v "

, maxval, maxvalindex)

}// 案例3 求出乙個陣列的和 以及平均值 for-range

func

demo3()

var total =

0for

_, v :=

range arr01

fmt.

printf

("total=%v 平均值=%v"

, total,

float32

(total)

/float32

(len

(arr01)))

}func

main()

golang基礎資料結構

這裡主要討論四種型別 陣列 slice map和結構體 陣列和結構體是聚合型別 它們的值都是由很多個元素或者成員欄位的值組成。陣列是有同構元素組成 每個陣列的元素的型別相同 結構體為異構元素組成 每個結構體不一定是同型別元素構成 陣列和結構體都是有固定記憶體大小的資料結構 slice和map則是動態...

golang資料結構

常見的資料結構有陣列 切片 map 結構體。陣列是乙個由固定長度的特定型別元素組成的序列,乙個陣列可以由零個或多個元素組成。陣列的宣告語法如下 var variable name size variable type陣列變數名 陣列宣告及使用時的變數名。元素數量 陣列的元素數量,可以是乙個表示式,但...

Golang 資料結構

每種語言在實現資料結構有些許不同。go 是如何實現的呢?1.陣列 arraypackage main import fmt func main x 3 4 1 2 0 4 0 0 0 x 8 8 越界無法通過編譯 a 3 int b int 型別推導 x 和 a,b 是兩種不同的資料型別 編譯器會把...