2 回答
TA贡献1874条经验 获得超12个赞
我得到的输出
因为如果 EngineType 和 Warranty 都不为零,您只会打印汽车的其他详细信息。如果其中一个为零,则省略其他详细信息。
您可以使用这样的辅助函数来干掉您的代码:
func StrOrDefault(s *string, default string) string {
if s == nil {
return default
} else {
return *s
}
}
如果有的话,你还必须决定你想要什么输出car == nil。在下面的代码中,如果 ,我输出“None” car == nil。
for _, res := range resp.Automobiles {
if res.Cars == nil {
continue
}
for _, car := range res.Cars {
if car == nil {
fmt.Println("None")
continue
}
details = []string{
*car.Name,
StrOrDefault(car.EngineType, "None"),
StrOrDefault(car.Warranty, "No warranty found"),
*car.DistanceCovered,
}
fmt.Println(strings.Join(details, ","))
}
}
TA贡献1864条经验 获得超6个赞
您可能更喜欢使用标准库模板机制而不是 fmt 例程。正如https://stackoverflow.com/a/32775203/7050833所示,您可以说“如果不是”...“其他”来捕获 nil 与非 nil 的情况。
- 2 回答
- 0 关注
- 165 浏览
添加回答
举报
