首页 >后端开发 >Golang >在 Go 中映射结构时如何解决'无效内存地址或 nil 指针取消引用”错误?

在 Go 中映射结构时如何解决'无效内存地址或 nil 指针取消引用”错误?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-14 09:56:12834浏览

How to Resolve

调试映射操作中的“无效内存地址或 nil 指针取消引用”错误

访问映射中的结构体字段时,可能会遇到“无效的内存地址或零指针取消引用”错误。当尝试取消引用 nil 指针时,通常会出现此问题。

在提供的具体示例中:

condition := map[string]*guardduty.Condition{}
condition["id"].Equals = strPtr

映射条件被初始化为指向 *guardduty.Condition 结构的指针的空映射。因此,在没有先初始化的情况下访问条件[“id”]将返回nil值,该值无法取消引用以设置Equals字段。

要解决此问题,您可以先检查该键是否存在使用以下方法在地图中:

if cond, ok := condition["id"]; !ok { // <nil> false
    log.Println("Pointer is null")
} else {
    // Init new guardduty.Condition
    // and assign to required key
    nc := &guardduty.Condition{Equals: strPtr}
    condition["id"] = nc
}

通过执行此检查,您可以在尝试取消引用指针并设置 Equals 之前确保指针不为零田野。

以上是在 Go 中映射结构时如何解决'无效内存地址或 nil 指针取消引用”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn