Go 模板 Template:判断 map 是否 nil 及 key 存在
之前用 Go 开发系统时,模板渲染用户配置页面频繁报错——要么是 “map is nil”,要么是 “key not found”。
一开始直接用{{.Config.Name}}渲染,没考虑配置未初始化的情况。
之前用 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 这些字段,控制台还没明确报错,页面只显示空值。
用最常规的 for range 遍历切片修改数据——明明代码里改了字段值,打印切片却还是原来的数据。
这是 Go 切片的“值传递”机制在搞鬼,这也是新手遍历切片修改时最容易踩的坑。