调试映射操作中的“无效内存地址或 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中文网其他相关文章!