【发布时间】:2019-01-09 23:09:54
【问题描述】:
对于代码append(slice1, 1),Go 编译将给出错误“append(...) 已评估但未使用”。而且我们必须使用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 方法进行一些特殊检查吗?由于 Go 是按值传递参数的,编译器应该知道appendStr 没有更改传入参数。
【问题讨论】:
标签: go