我正在循环从后端接收到的一些数据,中间可能包含一个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)
}
}
}
}