对于代码append(slice1, 1)
,Go 编译会给出错误“append(...)valuedbutnotused”。我们必须使用like,slice1 = append(slice1,1)
因为append
不修改slice1并且它将返回一个新的切片。
我认为这是一个很好的提示,因为这将防止很多错误,因为我们经常不知道函数append
会改变原始数组或不会。在 JavaScript 中array1.push('item')
,将就地更改 array1 并返回数组的新长度。
我想利用这种代码检查:
func appendStr(str string, tail string) string {
b := str + tail
return b
}
a := "a"
appendStr(a, "b")
Run Code Online (Sandbox Code Playgroud)
但是Go编译器没有报错。append
那么编译器会对方法进行一些特殊检查吗?由于 Go 按值传递参数,编译器应该知道appendStr
修改传入参数没有任何变化。
go ×1