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 是兩種不同的資料型別 編譯器會把...