处理来自列表Golang的循环中的nil



我正在循环从后端接收到的一些数据,中间可能包含一个nil,程序在panic: runtime error: invalid memory address or nil pointer dereference中崩溃

我该如何处理零?想要设置一个零来显示";"空";

我试过了,但还是崩溃了:

for _, res := range resp.Autombiles {
for _, trk := range res.Trucks {
if trk == nil {
println("EMPTY")
} else {
println(*trk.EngineType)
}
}
}
}

这是我的循环:

for _, res := range resp.Autombiles {
for _, trk := range res.Trucks {
fmt.Println(*trk.EngineType)
}
}
}

看起来res.Trucks为零。因此,您的程序在创建trk变量之前就崩溃了。for _, res := range res.Trucks{}

for _, res := range resp.Autombiles {
//       res.Trucks can be nil
for _, trk := range res.Trucks {
...
}
}

因此,添加对res.Trucks是否存在的检查

for _, res := range resp.Autombiles {
if res.Trucks != nil {
for _, trk := range res.Trucks {
if trk == nil || trk.EngineType == nil {
println("EMPTY")
} else {
println(*trk.EngineType)
}
}
}
}

最新更新