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

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

Go lang - 慣用的默認回退

Go lang - 慣用的默認回退

Go
智慧大石 2022-12-13 10:27:55
我是新手(現在全職使用 Go 大約 9 個月)。然而,我已經習慣了 Python、typescript 和 PHP,而且我總能找到使用這些語言的捷徑。但是,我很難知道實現以下目標的最慣用方法是什么:transit := gin.H{    "rise": rs.Rise.String(),    "set":  rs.Set.String(),}if rs.Rise.IsZero() {    transit["rise"] = nil}if rs.Set.IsZero() {    transit["set"] = nil}本質上,我設置了一個默認結構,然后如果我需要更改,我會更改......但它對我來說感覺效率低下......所以我想知道這里是否有我可以使用的技巧?我選擇了這個特定的真實場景,但我很高興有例子(而不是為我編碼)......
查看完整描述

1 回答

?
SMILET

TA貢獻1796條經驗 獲得超4個贊

這在執行方面并不低效。與其他語言相比,它可能有點冗長。有一些方法可以使用匿名函數來縮短此類重復代碼。這可以幫助縮短冗長的重復部分,而不會犧牲可讀性。


type StringZeroable interface {

   fmt.Stringer

   IsZero() bool

}


checkZero:=func(in StringZeroable) interface{} {

   if in.IsZero() {

     return nil

   }

   return in.String()

}


transit := gin.H{

    "rise": checkZero(rs.Rise),

    "set":  checkZero(rs.Set)

}


查看完整回答
反對 回復 2022-12-13
  • 1 回答
  • 0 關注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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