首页 > Golang Go语言中数组初始化 赋值 问题

Golang Go语言中数组初始化 赋值 问题

例如:

func main(){
    **var arrayTest []int
    for i:=1; i < 100; i++ {
        arrayTest[i] = rand.Intn(100)
    }**
    mergeSort(arrayTest,0,len(arrayTest)-1)
}
func mergeSort(arrayTest int[],i int,length int){
    ..........
}

运行时 为什么会报 panic: runtime error: index out of range ?该如何写 第一句

我把第一句改成 var arrayTest [100]int 后 mergeSort(arrayTest int[],i int,length int)必须改为mergeSort(arrayTest int[100],i int,length int)才行,但是这样又排不了序

请教大神!!!


func main() {
var tempArray [n]int
for i:=0; i < n; i++ {
    tempArray[i] = rand.Intn(n)+1
} 
arrayTest := tempArray[0:n]
fmt.Println("Start to Sort:")


//Run sort algorithms
fmt.Println( "MergeSort:" )
mergeSort(arrayTest,0,len(arrayTest)-1)
}

我看了下 改成这样就可以了

    func main() {
    var tempArray [n]int
    for i:=0; i < n; i++ {
        tempArray[i] = rand.Intn(n)+1
    } 
    arrayTest := tempArray[0:n]
    fmt.Println("Start to Sort:")


    //Run sort algorithms
    fmt.Println( "MergeSort:" )
    mergeSort(arrayTest,0,len(arrayTest)-1)
    }

mergeSort中传的参数是数组引用或切片 要满足要求的话,直接把初始化的数组tempArray[i]转成切片就可以了:arrayTest := tempArray[0:n]


arrayTest := meke([]int,100)


package main

import (
    "math/rand"
)

func main() {
    var arrayTest []int
    for i := 1; i < 100; i++ {
        arrayTest[i] = rand.Intn(100)
    }
    mergeSort(arrayTest[0:100], 0, len(arrayTest)-1)
}
func mergeSort(arrayTest []int, i int, length int) {
    //..........
}

没有申明数组大小,只需要调用mergeSort时,传切片.

【热门文章】
【热门文章】