我是新手(现在全职使用 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 关注
- 166 浏览
添加回答
举报
0/150
提交
取消
