亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

(Golang) 從列表中處理和格式化 nils

(Golang) 從列表中處理和格式化 nils

Go
米脂 2023-02-06 10:32:23
說我期待這個列表從查詢到后端:名稱:沃爾沃,發動機型號:2NR - FE,保修:2 年,行駛距離: 9000 公里。如果 EngineType 為空,等于 nil,我想將其設置為“None”,或者如果 Warranty == nil 我想將其設置為“No warranty found”這是我的循環:    for _, res := range resp.Automobiles {        if res.Cars != nil {            for _, car := range res.Cars {                if car == nil || car.EngineType == nil {                    fmt.Println("None")                } else if car.Warranty == nil {                    fmt.Println("NO Warranty Found")                } else {                    details = []string{*car.Name, *car.EngineType, *car.Warranty, *car.DistanceCovered}                    fmt.Println(strings.Join(details, ","))                }            }        }    }}如果 Warranty == nil 和 EngineType == nil 分別是我期望的輸出:Volvo, 2NR-FE, No warranty found, 9000kmVolvo, None, 2 years, 9000km我得到的輸出:No warranty FoundNone我的代碼只是將行設置為它檢查的第一個表達式我知道我的代碼可能很糟糕,我還在習慣 Go。
查看完整描述

2 回答

?
HUWWW

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, ","))

        }

    }


查看完整回答
反對 回復 2023-02-06
?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

您可能更喜歡使用標準庫模板機制而不是 fmt 例程。正如https://stackoverflow.com/a/32775203/7050833所示,您可以說“如果不是”...“其他”來捕獲 nil 與非 nil 的情況。

查看完整回答
反對 回復 2023-02-06
  • 2 回答
  • 0 關注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號