尝试在Go中为切片索引分配值

时间:2019-05-08 18:20:43

标签: arrays go slice

我试图为切片的索引分配一个值,但是每次我得到的索引超出范围时。我想我不太了解切片在Go中的工作原理,我理解切片的强大功能之一就是您无需声明固定长度,并且它是动态的,但是每次我尝试为索引分配一个值会出现运行时错误。

我尝试做备忘录:= make([] int,len),但是通过声明一个长度,它破坏了我检查len(memo)的代码的另一部分,并且似乎也使我无法理解为什么切片的目的很有用,因为它不需要初始长度吗?

var memo []int

func main() {

    fmt.Println(fibMemo(10, memo))

}

// Memoized Solution
func fibMemo(n int, memo []int) int {
    fmt.Println(n)
    var result int

    if len(memo) > n {
        return memo[n]
    }

    if n == 1 || n == 2 {
        result = 1
    } else {
        result = fibMemo(n-1, memo) + fibMemo(n-2, memo)
    }

    memo[n] = result
    fmt.Println(memo[n])

    return result
}

目标是使用备忘的解决方案打印出第10个斐波那契数字。尝试为备注切片的任何索引分配值时,出现运行时错误。

0 个答案:

没有答案