在用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不喜欢用户用计算值实例化数组的长度。它只接受常量。我应该放弃而用一片代替吗?我希望一个片是一个动态数组,这意味着它要么是一个链接列表,要么是当它满的时候复制到一个更大的数组中。
发布于 2016-07-13 22:31:26
不能用在运行时计算的值实例化这样的数组。相反,使用make来初始化具有所需长度的片。会是这样的;
left := make([]int, leftLength)https://stackoverflow.com/questions/38362631
复制相似问题