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 關注
- 137 瀏覽
添加回答
舉報