Go语言技术文章
-
用 bytes.Buffer 的写入、读取、Grow 和 Reset 场景区分 Cap 的底层总容量与 Len 的当前未读长度,说明预分配、复用和内存排查时各自应该看什么。487 收藏 -
Golang · Go教程 | 1星期前 | 标准库 · JSON · go · encoding/json · Go bytes.Buffer Prefix json.Indent JSON格式化 indent
Go json.Indent 会把已有 JSON 字节按对象和数组层级排版到 bytes.Buffer。本文区分 prefix、indent、字符串内容与输入空白边界,并说明何时应改用 json.MarshalIndent。487 收藏 -
Go go-chart 的图例文字来自序列的 Name 字段。本文用多个 ContinuousSeries 组成 Chart.Series,再把 chart.Legend 加入 Chart.Elements,说明 Legend、LegendLeft、LegendThin 的选择,以及 PNG 或 SVG 渲染时常见的空图例问题。487 收藏 -
解释 Go fsnotify 的 Rename 事件为什么不能直接等同于删除,并用父目录监听、Event.Name 过滤、os.Stat 复查和短暂去抖处理编辑器原子保存。487 收藏 -
Go 使用 golang.org/x/text/encoding/simplifiedchinese 处理 GB18030 四字节字符,关键是用 GB18030 的 Decoder 与 Encoder 在 UTF-8 和旧编码字节之间转换,并区分解码替换字符与编码不可表示错误。487 收藏 -
区分f.Add种子、testdata文件语料与fuzz探索缓存,说明目标目录、包路径、单样本过滤及输入类型匹配,并用边界错误示例解释如何建立稳定回归。487 收藏 -
Go 交叉编译时,纯 Go 项目可以通过 CGO_ENABLED=0 关闭 cgo,再用 GOOS 和 GOARCH 选择目标平台。本文从构建命令、go env 检查、cgo 构建约束和纯 Go 替代实现四个方面说明可执行做法与依赖边界。487 收藏 -
Go exec.Command 找不到程序时,先区分父进程 PATH、命令解析和子进程 Env。本文用 LookPath、Cmd.Path 与 os.Environ 逐层排查,并说明什么时候必须改成绝对路径。487 收藏 -
Go 的 time.Parse 不使用 YYYY-MM-DD 这类占位符,而是用固定参考时间描述布局。本文从解析失败的现场出发,拆解 2006、01、02、15、04、05、MST 和 -07:00 的含义,并说明无时区输入时 Parse 与 ParseInLocation 的区别。487 收藏 -
Go weak.Pointer 适合做不阻止对象回收的弱索引:业务代码保留强引用,索引只保存 weak.Pointer,读取时用 Value 判断对象是否仍可用,并在失效后删除旧条目。487 收藏 -
Go 1.23 起可用 slices.Chunk 返回 iter.Seq,按固定大小惰性遍历连续子切片。本文用完整示例说明末尾短块、空输入、非法大小、容量裁剪、元素修改与批处理错误定位。487 收藏 -
Go encoding/json/v2 默认拒绝 JSON 对象里的重复成员名。本文说明如何保持严格默认、避免误用 AllowDuplicateNames,并处理大小写匹配、SemanticError 与 v1 迁移回归。487 收藏 -
Go TLS 证书验证失败时,不要先关闭校验。先按 x509 错误判断主机名是否匹配,再检查 RootCAs、中间证书和系统根证书,最后用 VerifyOptions 做独立定位。487 收藏 -
Go error经过%w包装后不应再依赖完整字符串判断。本文区分错误文本、哨兵错误和具体类型,给出errors.Is、errors.As及多错误包装的替代方案。487 收藏 -
Go archive/tar 会自动处理 PAX 元数据头。读取时用 Header 获取已映射的标准字段,用 Header.PAXRecords 读取自定义扩展键,并在 Next、路径和类型转换处做好兼容处理。487 收藏