//slice默认cap等于len
var a []int = make([]int, 2)
fmt.Println(len(a)) //2
fmt.Println(cap(a)) //2
fmt.Println(a) //[0,0]
fmt.Println(&a[0]) //0xc21001e140
//当len长度增长超过cap时,会重新分配内存并复制slice内容
a = append(a, 3,4,5,6)
fmt.Println(len(a)) //6
fmt.Println(cap(a)) //6
fmt.Println(a) //[0 0 3 4 5 6]
fmt.Println(&a[0]) //0xc2100381b0
package main
import "fmt"
import "reflect"
func ptb(b []int) []int {
return b
}
func pta(a [4]int) [4]int {
return a
}
func main() {
a := [...]int{1,2,3,4}
b := []int{1,2,3,4}
fmt.Println("b type is", reflect.TypeOf(ptb(b))) //b type is []int
fmt.Println("a type is", reflect.TypeOf(pta(a))) //a type is [4]int
fmt.Println("a type is", reflect.TypeOf(ptb(a[:]))) //a type is []int
fmt.Println("b type is", reflect.TypeOf(ptb(a))) //usercode/file.go:18: cannot use a (type [4]int) as type []int in function argument
fmt.Println("a type is", reflect.TypeOf(pta(b))) //usercode/file.go:19: cannot use b (type []int) as type [4]int in function argument
}