2 回答

TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊
我得到的輸出
因?yàn)槿绻?EngineType 和 Warranty 都不為零,您只會(huì)打印汽車(chē)的其他詳細(xì)信息。如果其中一個(gè)為零,則省略其他詳細(xì)信息。
您可以使用這樣的輔助函數(shù)來(lái)干掉您的代碼:
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貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可能更喜歡使用標(biāo)準(zhǔn)庫(kù)模板機(jī)制而不是 fmt 例程。正如https://stackoverflow.com/a/32775203/7050833所示,您可以說(shuō)“如果不是”...“其他”來(lái)捕獲 nil 與非 nil 的情況。
- 2 回答
- 0 關(guān)注
- 136 瀏覽
添加回答
舉報(bào)