Go lang - 惯用的默认回退

我是新手(现在全职使用 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

}

本质上,我设置了一个默认结构,然后如果我需要更改,我会更改......但它对我来说感觉效率低下......所以我想知道这里是否有我可以使用的技巧?


我选择了这个特定的真实场景,但我很高兴有例子(而不是为我编码)......


智慧大石
浏览 167回答 1
1回答

SMILET

这在执行方面并不低效。与其他语言相比,它可能有点冗长。有一些方法可以使用匿名函数来缩短此类重复代码。这可以帮助缩短冗长的重复部分,而不会牺牲可读性。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)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go