数组-golang append()已评估但未使用

func main(){
     var array [10]int
     sliceA := array[0:5]
     append(sliceA, 4)
     fmt.Println(sliceA)
}

错误:已评估但未使用append(sliceA,4)

不知道为什么 切片附加操作未运行...

L.jerson asked 2020-07-19T11:14:06Z
4个解决方案
61 votes

参考:附加和复制切片

在Go中,参数按值传递。

append的典型用法是:

a = append(a, x)

您需要写:

func main(){
    var array [10]int
    sliceA := array[0:5]
    // append(sliceA, 4)  // discard
    sliceA = append(sliceA, 4)  // keep
    fmt.Println(sliceA)
}

输出:

[0 0 0 0 0 4]

希望对您有所帮助。

Mohsin answered 2020-07-19T11:14:41Z
4 votes

sliceA = append(sliceA,4)append返回包含一个或多个新值的切片。 请注意,我们需要接受append的返回值,因为我们可能会获得新的slice值。

榴莲榴莲 answered 2020-07-19T11:15:02Z
3 votes

您可以尝试以下方法:

sliceA = append(sliceA, 4)

内置函数append([]type, ...type)返回类型的数组/切片,应将其分配给所需的值,而输入数组/切片只是一个源。 只是outputSlice = append(sourceSlice, appendedValue)

Nevercare answered 2020-07-19T11:15:27Z
1 votes

根据Go文档:

附加值的结果是一个切片,其中包含原始切片的所有元素以及提供的值。

因此,“ append”的返回值将包含原始切片以及附加的部分。

djt answered 2020-07-19T11:15:55Z
translate from https://stackoverflow.com:/questions/45004854/golang-append-evaluated-but-not-used