golang使用array表示固定大小的数组,使用slice表示动态数组。
package main import "fmt" func main() { var a = [5]int{2,3,5,7,11} fmt.Printf("type of array: %T ", a) fmt.Printf("address of array: %p ", &a) fmt.Printf("address of arrar[0]: %p ", &a[0]) s := a[:] fmt.Printf("slice = %v, len = %d, cap = %d ", s, len(s), cap(s)) fmt.Printf("address of slice: %p ", &s) fmt.Printf("address of slice[0]: %p ", &s[0]) s = append(s, 13) fmt.Printf("slice = %v, len = %d, cap = %d ", s, len(s), cap(s)) fmt.Printf("address of slice: %p ", &s) fmt.Printf("address of slice[0]: %p ", &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
参考资料: