func SliceAppend() ([5]int, []int) {
ia := [...]int{1, 2, 3, 4, 5}
ia2 := ia[1:3]
ia2 = append(ia2, 6, 7, 8, 9)
fmt.Println("*************************")
fmt.Println("Type of ia is: ", reflect.TypeOf(ia))
fmt.Println("Type of ia2 is: ", reflect.TypeOf(ia2))
fmt.Println("*************************")
return ia, ia2
}
输出这个样子:
*************************
Type of ia is: [5]int
Type of ia2 is: []int
*************************
为什么两个返回的数组类型不一样?新手不太懂
有疑问加站长微信联系(非本文作者)

[5]int, []int 中,[5]int 是数组,[]int 是切片,不是一个东西,但有关联。
我希望一个函数,返回两个数组,应该怎么写啊?
建议你了解下 数组和切片的区别和联系。数组成本是很高的。
请问是切片成本高还是数组成本高?
@focusonline 数组是只拷贝,你说呢?切片是引用。先搞清楚两者吧。否则下折腾不会有太大提升。
不是说这个要看内存布局么,如果是逃逸了,两个都一样, 否则是数组成本低,因为每次都复制,没有GC压力?切片如果不逃逸的话是比复制成本低?有点糊涂了
这文章好好看看 https://studygolang.com/articles/20603