go - golang 中动态大小的数组?

标签 go

<分区>

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

错误:

panic: runtime error: index out of range in 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
}

最佳答案

你应该使用 append功能。

var a []int

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

a = append(a, iter.Val)

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

a := make([]int, 10)

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

关于go - golang 中动态大小的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57441647/

相关文章:

json - 在 Python 中将任何 JSON 转换为标准字典的 golang 等价物是什么?

http - 在 Golang 中从 http.Get 读取内容

c++ - 在 macOS 主机上为 Windows 目标交叉编译 golang 和 cgo

go - 即时将流式数据附加到 Minio 上的文件

testing - 为什么golang测试包在报告测试失败时用下划线替换空格?

c - 如何将 uint8_t 数组从 C 发送到 GO

json - 如何在不编码整个文档的情况下清空现有 JSON 数组对象

google-app-engine - 在 Go 中合并独立的 webapp 和 GAE

go - 是否可以同时计算文件的md5并将文件写入磁盘?

go - 如何将字符串写入二进制文件?