小编典典

Golang 将项目附加到切片

go

为什么切片a保持不变?是否append()生成新切片?

package main

import (
    "fmt"
)

var a = make([]int, 7, 8)

func Test(slice []int) {
    slice = append(slice, 100)
    fmt.Println(slice)
}

func main() {
    for i := 0; i < 7; i++ {
        a[i] = i
    }

    Test(a)
    fmt.Println(a)
}

输出:

[0 1 2 3 4 5 6 100]
[0 1 2 3 4 5 6]

阅读 177

收藏
2021-12-13

共1个答案

小编典典

典型append用法是

a = append(a, x)

因为append可以就地修改其参数返回其参数的副本以及附加条目,具体取决于其输入的大小和容量。使用先前附加到的切片可能会产生意想不到的结果,例如

a := []int{1,2,3}
a = append(a, 4)
fmt.Println(a)
append(a[:3], 5)
fmt.Println(a)

可以打印

[1 2 3 4]
[1 2 3 5]
2021-12-13