slice和数组区别
- 数组长度不可变,slice是长度可变的
- 数组的内存分配固定大小,slice底层引用的其实就是数组
- 切片是应用类型,在作为值传递时,效率高于数组
demo1
func main() {
var sl []int
sl = append(sl, 9, 7, 5)
f(sl)
fmt.Println(sl)
}
func f(sl []int) {
for i := 0; i < 3; i++ {
sl = append(sl, i)
}
for i := 0; i < 3; i++ {
sl[i] = sl[i] + 2
}
fmt.Println(sl)
}
demo2
func main() {
var sl []int
sl = append(sl, 9, 7, 5)
f(sl)
fmt.Println(sl)
}
func f(sl []int) {
for i := 0; i < 3; i++ {
sl[i] = sl[i] + 2
}
for i := 0; i < 3; i++ {
sl = append(sl, i)
}
fmt.Println(sl)
}
demo3
func main() {
var sl []int
sl = append(sl, 9, 7, 5)
f(sl)
fmt.Println(sl)
}
func f(sl []int) {
for i := 0; i < 3; i++ {
sl[i] = sl[i] + 2
sl = append(sl, i)
}
fmt.Println(sl)
}
demo4
func myAppend(sl []int) []int {
sl = append(sl, 100)
return sl
}
func myAppendPtr(sl *[]int) {
*sl = append(*sl, 100)
return
}