在Golang中,我试图为我的旅行推销员问题创建一个加扰切片函数。这样做时,我注意到当我开始编辑切片时,每次传递时,我赋予的加密功能都是不同的。


经过一些调试后,我发现这是由于我在函数内部编辑了切片。但是既然Golang被认为是一种“价值传递”的语言,那怎么可能呢?


https://play.golang.org/p/mMivoH0TuV


我提供了一个游乐场链接来显示我的意思。通过删除第27行,您获得的输出与留在其中的输出将有所不同,这应该不会有所不同,因为该函数在作为参数传入时应该具有自己的切片副本。

有人可以解释这种现象吗?