首页 > 解决方案 > golang中动态大小的数组?

问题描述

我想知道是否有任何方法可以创建动态大小的数组以避免下面代码中的运行时错误。

错误:

恐慌:运行时错误:Go 中的索引超出范围

代码:

/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func nextLargerNodes(head *ListNode) []int {

    var a []int
    var pha int
    hNum := 0
    currNode := head
    pha = 0
    for currNode.Next != nil {
        iter := currNode.Next
        hNum = currNode.Val
        //phb = pha + 1
        for(iter.Next != nil){
            if hNum < iter.Val {
                hNum = iter.Val
                break
            } else if hNum == iter.Val{
                hNum = 0
                break
            }

            iter = iter.Next
        }
        a[pha] = iter.Val
        pha++
        hNum = 0
        currNode = currNode.Next
    }
    return a
}

标签: go

解决方案


您应该使用附加功能。

变种 []int

是一个切片,你可以把它想象成一个“动态数组”。为了向其中添加元素,您应该使用 append 方法。在您的代码中,您使用了数组语义。

a = append(a, iter.Val)

如果您预先知道切片中将包含多少元素,则可以使用预定义数量的元素创建切片。

a := make([]int, 10)

这将创建一个包含 10 个元素的切片。


推荐阅读