golang中的陣列是這樣說的: arrays are values, not implicit pointers as in c.
1、陣列做引數時, 需要被檢查長度.
2、變數名不等於陣列開始指標!
3、不支援c中的*(ar + sizeof(int))方式的指標移動. 需要使用到unsafe包
4、如果p2array為指向陣列的指標, *p2array不等於p2array[0]
例子1 :陣列做引數時, 需要被檢查長度
func use_array(args [4]int)
func main()
use_array(args)
fmt.println(args)
}
編譯出錯:cannot use args (type [5]int) as type [4]int in argument to use_array
需要有長度上的檢查
例子2: 變數名不等於陣列開始指標
func use_array(args [5]int)
func main()
use_array(args)
fmt.println(args)
}
輸出結果:[1 2 3 4 5]
沒有儲存結果, 陣列名的用法與c的不一樣. 在golang裡是這樣的:
// 有長度檢查, 也為位址傳參
func use_array(args *[4]int)
func main()
use_array(&args) // 陣列名已經不是表示位址了, 需要使用"&"得到位址
fmt.println(args)
}
輸出結果:[1 100 3 4]
例子3 :如果p2array為指向陣列的指標,*p2array不等於p2array[0]
import (
"fmt"
)func main()
編譯出錯:invalid operation: *p2array + 1 (mismatched types [3]int and int)
func use_array(args *[4]int)
func main()
use_array(&args) // 陣列名已經不是表示位址了, 需要使用"&"得到位址
fmt.printf("%v\n", &args[0]) //獲取陣列位址方法2
fmt.println(args)
}
輸出結果:
0x116b2160
0x116b2160
[1 100 3 4]
golang中的陣列
陣列含義 同一種資料型別元素的集合,陣列的成員可以修改,但是不能追加跟刪除,大小不可以變化 陣列的定義 var 陣列名 元素數量 t陣列的訪問 通過下標進行訪問,下標從0開始,最後乙個元素是len 陣列名 1 注意 訪問不能越界,越界會panic 陣列的遍歷 package main import ...
golang中陣列與切片的應用
加注釋擼起來 package main description 陣列與切片 author guai date 2020 2 21 9 15 import fmt math rand time func main fmt.println 雞的總重 totalweight 陣列定義和記憶體布局 定義 v...
golang 包含 陣列 Golang 陣列與分片
與陣列的區別陣列是固定長度的,而分片確實可動態增長的,以定義為例 定義陣列,一定要指定長度var names 5 string 定義分片,不需要指定長度var names string在函式呼叫時,陣列是值傳遞,而分片是引用傳遞 其實對於 golang 來講,函式呼叫的時候都是值傳遞,拷貝乙個副本,...