为了账号安全,请及时绑定邮箱和手机立即绑定

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 关注
  • 166 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号