为什么Go中不捕获append()的返回值会导致编译错误?

问题描述 投票:0回答:1

以下代码:

package main

func main() {
    var foo []string

    append(foo, "lorem")
}

...导致此编译错误:

append(foo, "lorem") (value of type []string) is not used

我似乎可以通过捕获

append()
的返回值来解决这个问题;以下代码编译正常:

package main

func main() {
    var foo []string

    _ = append(foo, "lorem")
}

编译错误的本质是什么?我不明白它想指出什么。

编译器强制执行代码正确性吗?它是想告诉我“你必须从返回某些内容的函数中捕获返回值”吗?

go compiler-errors append slice
1个回答
0
投票
package main

func main() {
    var foo []string
    append(foo, "lorem")
}

https://go.dev/play/p/L2dvRxELd_D

5:2: append(foo, "lorem") (value of type []string) is not used

换句话说,你所做的事情完全没有意义,因为你放弃了结果。


Go 编程语言规范

可变参数函数append将零个或多个值x附加到切片s并返回与s类型相同的结果切片。


Go 博客:数组、切片(和字符串):“追加”的机制


© www.soinside.com 2019 - 2024. All rights reserved.