我是新手(現在全職使用 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)
}
- 1 回答
- 0 關注
- 134 瀏覽
添加回答
舉報
0/150
提交
取消