Go error:非常数数组绑定

时间:2016-07-13 22:18:01

标签: go

我试图在合并排序实现中计算数组所需的长度我在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 是一个动态数组,这意味着它可以是一个链表,也可以在它满了时复制到一个更大的数组中。

1 个答案:

答案 0 :(得分:71)

您无法使用在运行时计算的值来实例化类似的数组。而是使用make来初始化具有所需长度的切片。它看起来像这样;

left := make([]int, leftLength)