我們之前學會如何宣告變數,使用變數來儲存值。
但若今天如果需要儲存多個數值,使用原有的方式則會發現需要創建多個變數才能儲存多個數據,
所以這章節我們來討論陣列使用
陣列是由相同類型的元素(element)的集合所組成的資料結構,分配一塊連續的記憶體來儲存。利用元素的索引(index)可以計算出該元素對應的儲存位址
var variable_name [SIZE] variale_type
陣列當中存有長度及容量
可以使用內置 len func 來查看陣列的長度
使用 cap func 來查看陣列的容量
//聲明一個有3個 float32 的陣列
var balance [3]float32
//一開始默認值為0
fmt.Println(balance)
balance[0] = 12.5
balance[1] = 135
fmt.Printf("balance 存儲的值 %v\n", balance)
//可以就由索引來訪問儲存的值
fmt.Printf("balance 索引為0 存儲的值 %v\n", balance[0])
//實際能存儲的數值的量
fmt.Printf("陣列的長度為%d\n", len(balance))
//能夠存儲的最大數量
fmt.Printf("陣列的容量為%d\n", cap(balance))
//重新賦值
balance[0] = 17.45
fmt.Printf("balance 索引為0 存儲的值 %v\n", balance[0])
//宣告直接賦值
var b = [4]int{5, 6, 7, 8}
fmt.Printf("b 存儲的值 %v\n", b)
//宣告賦值 未賦值則是默認值
var c = [5]int{7, 6, 4}
fmt.Printf("c 存儲的值 %v\n", c)
//宣告使用索引賦值
var d = [5]int{1: 7, 3: 6, 4: 4}
fmt.Printf("d 存儲的值 %v\n", d)
//藉由賦值來推斷長度
var e = [...]int{7, 8, 9, 10}
fmt.Printf("e 存儲的值 %v\n", e)
//實際能存儲的數值的量
fmt.Printf("e 陣列的長度為%d\n", len(e))
//能夠存儲的最大數量
fmt.Printf("e 陣列的容量為%d\n", cap(e))
陣列是分配一塊連續的記憶體來儲存
package main
import (
"fmt"
)
func main() {
a := [...]int8{1, 2, 3}
fmt.Printf("a 的記憶體分配位置 %p \n", &a)
fmt.Printf("陣列 a 的索引 0 記憶體分配位置 %p \n", &a[0])
fmt.Printf("陣列 a 的索引 1 記憶體分配位置 %p \n", &a[1])
fmt.Printf("陣列 a 的索引 2 記憶體分配位置 %p \n", &a[2])
}
package main
import (
"fmt"
)
func main() {
a := [...]int8{1, 2, 3}
fmt.Printf("a 記憶體分配位置 %p \n", &a)
//使用 changeArray func
changeArray(a)
//可以查看陣列的數據當中並沒有更改
fmt.Println(a)
}
func changeArray(arr [3]int8) {
fmt.Printf("arr 記憶體分配位置 %p\n", &arr)
//將 arr index 0 更換置0
arr[0] = 100
}