Golang 陣列
阿新 • • 發佈:2020-08-10
Golang 陣列
目錄
陣列的四種初始化
func main() { var arr1 [3]int fmt.Println(arr1) //int[] arr = new int[3]{1,3,4}; Java中報錯 var arr2 = [3]int{1, 2, 4} fmt.Println(arr2) //形如Java int[] arr = new int[]{1,2,3,4} var arr3 = [...]int{1, 2, 3, 4} fmt.Println(arr3) //類似於Js中的偽陣列形式, 預設按照陣列下標填充 var arr4 = [...]int{1: 100, 0: 200, 2: 300}//200,100,300 fmt.Println(arr4) arr5 := [...]string{1: "tom", 0: "Jack"} fmt.Println(arr5) }
for - range
func main() {
arr5 := [...]string{1: "tom", 0: "Jack",2:"Jessie",3:"Lucy"}
//和Js中的forEach方法相似,可以同時獲取到下標和值
for idx, val := range arr5 {
fmt.Printf("index = %d, val = %s \n",index,val)
}
fmt.Println(arr5)
}
注意事項
-
陣列是多個相同型別資料的組合, 一個數組一旦宣告/ 定義了, 其長度是固定的, 不能動態變化
-
var arr[] int
, arr就是一個slice
切片, 注意沒有初始長度 -
Go的陣列屬於值型別, 在預設情況下是值傳遞, 因此會進行值拷貝, 陣列間不會相互影響,
不同於
Java
和C#
//長度做為陣列的一部分, [3]int != [4]int func method(arr [4]int) { for idx, _ := range arr { arr[idx] *= 10 } } func main() { arr := [...]int{1, 2, 3, 4} fmt.Println(arr) // 1,2,3,4 method(arr) fmt.Println(arr) // 1,2,3,4 }
-
如果想在其它函式中, 修改原來的陣列, 可以使用引用傳遞(指標)
//使用指標型別 func method(arr *[4]int) { arr[0] = 10 } func main() { arr := [...]int{1, 2, 3, 4} fmt.Println(arr) // 1,2,3,4 method(&arr) fmt.Println(arr) // 10,2,3,4 }
-
長度是陣列型別的一部分, 在傳遞函式引數是, 需要考慮陣列的長度