我试图在合并排序实现中计算数组所需的长度我在go
中写作。它看起来像这样:
func merge(array []int, start, middle, end int) {
leftLength := middle - start + 1
rightLength := end - middle
var left [leftLength]int
var right [rightLength]int
//...
}
我在运行go test
:
./mergesort.go:6: non-constant array bound leftLength
./mergesort.go:7: non-constant array bound rightLength
我认为go
不喜欢用实例化具有计算值的数组长度的用户。它只接受常量。我应该放弃并使用切片吗?我希望 slice 是一个动态数组,这意味着它可以是一个链表,也可以在它满了时复制到一个更大的数组中。
答案 0 :(得分:71)
您无法使用在运行时计算的值来实例化类似的数组。而是使用make来初始化具有所需长度的切片。它看起来像这样;
left := make([]int, leftLength)