Go语言惯用的默认回退

  • 本文关键字:默认 回退 语言 Go go
  • 更新时间 :
  • 英文 :


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

本质上,我设置了一个默认的结构体,然后如果我需要改变,我改变…但我觉得效率很低……所以我想知道这里是否有什么我可以使用的技巧?

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

这在执行方面不是低效的。与其他语言相比,它可能有点冗长。有一些方法可以使用匿名函数来缩短这种重复的代码。这可以帮助你在不牺牲可读性的情况下缩短冗长的重复部分。

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)
}

最新更新