-
Go1.11+多模块项目需为每个子模块单独创建go.mod文件并显式声明依赖,不可依赖顶层模块管理;本地开发用replace,CI用gomodedit-replace,发布前须移除replace并使用真实版本号。
-
Go中结构体字段导出性仅由首字母大小写决定:大写可导出,小写不可导出;嵌入字段提升、反射访问、JSON序列化均受此规则约束。
-
使用-race检测器和编写高并发测试用例是验证Go并发安全的核心方法。1.使用gotest-race参数可检测数据竞争,发现多goroutine无同步访问共享变量的问题;2.编写模拟极端场景的测试用例,如1000个goroutine并发递增计数器,提高并发bug暴露几率;3.注意多次运行测试、适当加入sleep、避免伪共享,并结合工具与压力测试,以提升测试效果。
-
合理设计指标类型与粒度,避免高基数标签和过度使用Histogram,预聚合数据以减少采集压力;复用*Vec指标并延迟初始化,缓存常用标签实例以降低开销;分环境控制暴露范围,动态启停采集器,调整scrape_interval;重用LabelPairs,限制活跃序列数,及时清理过期指标,减少GC压力。
-
Go中可通过接口+组合+函数字段模拟模板方法模式:定义含Validate/Process/Notify/LogResult方法的PaymentProcessor接口,Executor结构体持该接口并实现固定流程Execute(),具体类型如CreditCardProcessor实现接口方法以定制步骤逻辑。