數組:
與C語言類似,數組元素可以通過索引(位置)來讀取(或者修改),索引從 0 開始,第一個元素索引爲 0,第二個索引爲 1,以此類推,
一維數組的定義方式:
Go 語言數組聲明需要指定元素類型及元素個數,語法格式如下:
var variable_name [SIZE] variable_type
。例如
var str [10] float64
多維數組聲明方式:
var variable_name [SIZE1][SIZE2]…[SIZEN] variable_type
以下實例聲明瞭三維的整型數組:
var str [512[1024][8]int
遍歷方式:
與C語言遍歷方式相同
注意點:
-
想向函數傳遞數組參數,需要在函數定義時,聲明形參爲數組
-
其中分爲:形參設定數組大小y以及形參未設定數組大小
void func test (str [] int) //分片,數組的處理,切片包含對底層數組內容的引用,類似於 指針傳,函數中的修改對調用者可見。
void func test1 (str [10] int) //拷貝,值傳遞,函數中的修改對調用者不可見 -
未定義長度的數組只能傳給不限制數組長度的函數 ,定義了長度的數組只能傳給限制了相同數組長度的函數
package main
import "fmt"
/*數組拷貝,不改變調用者的數組的內容*/
func boo(tt [6]int) {
tt[0], tt[len(tt)-1] = tt[len(tt)-1], tt[0]
fmt.Println(tt)
}
/*切片,類似指針操作,可以修改源數組的內容*/
func poo(tt []int) {
tt[0], tt[len(tt)-1] = tt[len(tt)-1], tt[0] //多重賦值時,變量的左值和右值按從左到右的順序賦值
fmt.Println(tt)
}
func TestShuzu() {
b := [...]int{1, 3, 5, 7, 9, 11}
boo(b)
fmt.Println(b) // [1, 3, 5, 7, 9, 11]
p := []int{1, 3, 5, 7, 9, 11}
poo(p)
fmt.Println(p) // [11 3 5 7 11 1]
}
func main() {
TestShuzu()
}
API server listening at: 127.0.0.1:31758
[11 3 5 7 9 1]
[1 3 5 7 9 11]
[11 3 5 7 9 1]
[11 3 5 7 9 1]
Process exiting with code: 0