這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
golang使用array表示固定大小的數組,使用slice表示動態數組。
package mainimport "fmt"func main() {var a = [5]int{2,3,5,7,11}fmt.Printf("type of array: %T\n", a)fmt.Printf("address of array: %p\n", &a)fmt.Printf("address of arrar[0]: %p\n", &a[0])s := a[:]fmt.Printf("slice = %v, len = %d, cap = %d\n", s, len(s), cap(s))fmt.Printf("address of slice: %p\n", &s)fmt.Printf("address of slice[0]: %p\n", &s[0])s = append(s, 13)fmt.Printf("slice = %v, len = %d, cap = %d\n", s, len(s), cap(s))fmt.Printf("address of slice: %p\n", &s)fmt.Printf("address of slice[0]: %p\n", &s[0])}
輸出如下:
type of array: [5]int
address of array: 0xc420014150
address of arrar[0]: 0xc420014150
slice = [2 3 5 7 11], len = 5, cap = 5
address of slice: 0xc42000a060
address of slice[0]: 0xc420014150
slice = [2 3 5 7 11 13], len = 6, cap = 10
address of slice: 0xc42000a060
address of slice[0]: 0xc42001c0f0
參考資料:
Slices: usage and internals
https://golang.org/pkg/builtin/#append