我能找到的最通用的错误版本如下所示:
package main
import "fmt"
func main() {
values := []any{1,2,3}
values = append(values[:1],values[1:])
fmt.Println(values)
}
这会导致堆栈溢出(有趣的是我在这个站点上发布).如果我从print语句中删除values
,并将其替换为其他内容(如0
),它不会抛出错误,并且可以正确打印.
如果我使用...
来可变地使用附加值,代码运行正常并打印[1 2 3]
.
我还试着在更改为values
和另一条print语句之间添加fmt.Println("This section of code reached successfully!")
,但它在错误之前打印,这意味着fmt.Println(values)
是导致溢出的行.
我可以自己打印values
中的第一项而没有错误,但是自己打印列表中的第二项会导致溢出.
此版本的代码运行时没有错误:
package main
import "fmt"
func main() {
values := append([]any{1},[]any{2,3})
fmt.Println(values)
}
这一切为什么要发生?这是我在我的一个项目中遇到的一个错误的更一般的版本.