这段代码可以优化,因为它没有考虑闰年的2月29日和不同月份的实际天数(有些月是31天)。以下是优化后的代码:
1 | // 获取当月的最后一天 |
这个优化使用了一个常见的技巧:获取下个月的第0天,Go语言会自动将其解释为当前月份的最后一天。这样的写法有以下优点:
- 自动处理闰年的2月(28天或29天)
- 自动处理不同月份的天数(30天或31天)
- 代码更简洁,不需要条件判断
- 更符合实际需求,如果目的是月底检查,应该是每月的最后一天
如果你确实只需要固定的日期(2月28日和其他月份的30日),那么原代码就没问题,但通常监控月底状态更常见的是使用每月的实际最后一天。
sort.Slice(ps, func(i, j int) bool {
return ps[i].Count > ps[j].Count
}) 能否简化?
这是排序代码的一个标准写法,使用 sort.Slice 根据 Count 字段进行降序排序。如果你想简化,可以考虑以下替代方法:
1 | sort.SliceStable(ps, func(i, j int) bool { |
或者,如果你频繁需要这种排序,可以为你的切片类型定义一个排序方法:
1 | type Products []Product // 假设 ps 是 Product 的切片 |
但老实说,原代码已经相当简洁,特别是如果这只是一次性排序。使用 sort.Slice 是 Go 语言中最直接和可读性最好的方法之一。
原文链接: https://dashen.tech/2025/04/21/Go常用Tricks/
版权声明: 转载请注明出处.