Go 项目启动 Install 函数设计指南:优雅初始化的实践方案
Go项目启动 Install 函数设计指南:优雅初始化的实践方案
我曾被启动阶段的混乱代码搞得头大:数据库连接、配置加载、服务注册全堆在main函数里,出了问题根本没法定位。
我曾被启动阶段的混乱代码搞得头大:数据库连接、配置加载、服务注册全堆在main函数里,出了问题根本没法定位。
之前用 Go 开发系统时,模板渲染用户配置页面频繁报错——要么是 “map is nil”,要么是 “key not found”。
一开始直接用{{.Config.Name}}渲染,没考虑配置未初始化的情况。
在做配置文件导出功能时,直接用json.Marshal把数据转成 JSON 后写入文件,结果打开文件一看全是压缩成一行的乱码
实际可以用json.MarshalIndent做格式化缩进,还要指定编码避免乱码。
先明确核心前提:
Go 中数组是值类型,长度固定,排序时会复制副本(修改副本不影响原数组);切片是引用类型,排序时直接操作底层数组(推荐用切片做排序场景)。
在做日志分析工具时,一开始用ioutil.ReadFile把整个日志文件读进内存再按行分割,测试小文件没问题。
上线后遇到几个 10GB 的超大日志,直接触发内存溢出。
上周开发时,用 Go 的 html/template 渲染列表页面,明明在代码里传了 User 结构体数据,tpl 模板里却始终读不到 name、age 这些字段,控制台还没明确报错,页面只显示空值。