【发布时间】:2019-03-18 17:14:21
【问题描述】:
我无法运行这个 Go 语言测试程序。编译器在下面的 append() 函数调用中不断给出错误,并出现“已评估但未使用”错误。我不知道为什么。
package main
import (
"fmt"
)
func removeDuplicates(testArr *[]int) int {
prevValue := (*testArr)[0]
for curIndex := 1; curIndex < len((*testArr)); curIndex++ {
curValue := (*testArr)[curIndex]
if curValue == prevValue {
append((*testArr)[:curIndex], (*testArr)[curIndex+1:]...)
}
prevValue = curValue
}
return len(*testArr)
}
func main() {
testArr := []int{0, 0, 1, 1, 1, 2, 2, 3, 3, 4}
nonDupSize := removeDuplicates(&testArr)
fmt.Printf("nonDupSize = %d", nonDupSize)
}
【问题讨论】:
-
好吧,因为你没有使用 append 的返回值。 Append 可能会返回一个新切片,因此您必须分配返回值。 tour.golang.org/moretypes/15
-
是的,修复了编译错误,下一个问题是这会分配一个新切片吗?
-
append documentation 回答您的下一个问题。