我正在尝试计算我正在编写的合并排序实现中的数组所需的长度go.它看起来像这样:
func merge(array []int, start, middle, end int) {
leftLength := middle - start + 1
rightLength := end - middle
var left [leftLength]int
var right [rightLength]int
//...
}
Run Code Online (Sandbox Code Playgroud)
我在运行时收到此投诉go test:
./mergesort.go:6: non-constant array bound leftLength
./mergesort.go:7: non-constant array bound rightLength
Run Code Online (Sandbox Code Playgroud)
我假设go不喜欢用户使用计算值实例化数组的长度.它只接受常量.我应该放弃并使用切片吗?我希望切片是一个动态数组,这意味着它可以是一个链表,也可以在它满了时复制到一个更大的数组中.
eva*_*nal 85
您无法使用在运行时计算的值来实例化类似的数组.而是使用make来初始化具有所需长度的切片.它看起来像这样;
left := make([]int, leftLength)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24116 次 |
| 最近记录: |