golang array和以往認知的陣列有很大不同。
for i :=
0; i <
len(a)
; i++
for index, v :=
range a
全域性:
var arr0 [5]
int=[5
]int
var arr1 =[5
]int
var arr2 =
[...
]int
var str =[5
]string
區域性:a :=[3
]int
// 未初始化元素值為 0。
b :=
[...
]int
// 通過初始化值確定陣列長度。
c :=[5
]int
// 使用引號初始化元素。
d :=
[...
]struct
,// 可省略元素型別。
,// 別忘了最後一行的逗號。
}
**:
package main
import
("fmt"
)var arr0 [5]
int=[5
]int
var arr1 =[5
]int
var arr2 =
[...
]int
var str =[5
]string
func
main()
// 未初始化元素值為 0。
b :=
[...
]int
// 通過初始化值確定陣列長度。
c :=[5
]int
// 使用引號初始化元素。
d :=
[...
]struct
,// 可省略元素型別。
,// 別忘了最後一行的逗號。
} fmt.
println
(arr0, arr1, arr2, str)
fmt.
println
(a, b, c, d)
}輸出結果:[1
2300
][12
345]
[123
456]
[ hello world tom][1
20][
1234
][00
1000
200]
全域性
var arr0 [5]
[3]int
var arr1 [2]
[3]int=[
...][3
]int,}
區域性:a :=[2
][3]
int,
}b :=
[...][
2]int,,}
// 第 2 緯度不能用 "..."。
**:package main
import
("fmt"
)var arr0 [5]
[3]int
var arr1 [2]
[3]int=[
...][3
]int,}
func
main()
,}b :=
[...][
2]int,,}
// 第 2 緯度不能用 "..."。
fmt.
println
(arr0, arr1)
fmt.
println
(a, b)
}輸出結果:[[
000]
[000
][00
0][0
00][
000]
][[1
23][
789]
][[1
23][
456]
][[1
1][2
2][3
3]]
值拷貝行為會造成效能問題,通常會建議使用slice
,或陣列指標。
package main
import
("fmt"
)func
test
(x [2]
int)
func
main()
fmt.
printf
("a: %p\n"
,&a)
test
(a) fmt.
println
(a)}
輸出結果:
a:0xc42007c010
x:0xc42007c030[0
0]
內建函式 len 和 cap 都返回陣列長度 (元素數量)。
package main
func
main()
println
(len
(a),
cap(a))}
輸出結果:
22
package main
import
("fmt"
)func
main()
,}for k1, v1 :=
range f
fmt.
println()
}}輸出結果:(0
,0)=
1(0,
1)=2
(0,2
)=3(
1,0)
=7(1
,1)=
8(1,
2)=9
go array和slice的區別
屬於集合類的型別,值都可以用來儲存某一種型別的值 或者說元素 陣列的長度固定,陣列是值型別 值型別有基本資料型別,結構體型別 slice的值長度可變,屬於引用型別 引用型別 字典型別,通道型別,函式型別 切片是引用傳遞,所以它們不需要使用額外的記憶體並且比使用陣列更有效率。如果傳遞的是引用型別,那麼...
樹狀陣列 詳解
對於普通陣列,其修改的時間複雜度位o 1 而求陣列中某一段的數值和的時間複雜度為o n 因此對於n的值過大的情況,普通陣列的時間複雜度我們是接受不了的。在此,我們引入了樹狀陣列的資料結構,它能在o logn 內對陣列的值進行修改和查詢某一段數值的和。假設a陣列為儲存原來的值得陣列,c為樹狀陣列。我們...
PHP 陣列詳解
陣列能夠在單個變數中儲存多個值 cars array volvo bmw toyota echo i like cars 0 cars 1 and cars 2 陣列是乙個能在單個變數中儲存多個值的特殊變數。如果您有乙個專案清單 例如 車名字的清單 將其儲存到單個變數中,如下所示 cars1 vol...