对于代码append(slice1, 1),Go compile将给出错误“ append(...)已评估,但未使用”。我们必须使用like,slice1 = append(slice1,1)因为append它不会修改slice1,并且它将返回一个新的slice。
我认为这是一个很好的提示,因为这将防止很多错误,因为我们通常不知道像这样的功能append是否会更改原始数组。在JavaScript中,array1.push('item')将在位置更改array1并返回该数组的新长度。
我想利用这种代码检查:
func appendStr(str string, tail string) string {
b := str + tail
return b
}
a := "a"
appendStr(a, "b")
但是Go编译器没有给出错误。那么编译器会对append方法做一些特殊的检查吗?由于按值传递参数,因此编译器应该知道appendStr更改传递参数没有任何变化。
HUX布斯
相关分类