Go教程技术文章
-
Go gzip.Writer 的 Name、ModTime、Comment 等字段会写入 gzip 文件头,但必须在第一次 Write、Flush 或 Close 之前设置。本文给出最小写法,并说明复用 Writer、读回元数据和字段边界。262 收藏 -
用 go test -cover 建立按包基线,再用 coverprofile 与 go tool cover 定位函数盲区,并区分默认包内统计和 -coverpkg 跨包统计。262 收藏 -
Go 使用 slices.Delete 原地删除切片区间,并在 Go 1.22 及以后清空废弃尾部的元素引用。本文说明半开区间、返回长度、别名共享、批量删除和需要保留输入时的复制边界。262 收藏 -
Go errors.Join 遍历需同时识别两种 Unwrap 接口,区分包装节点与叶原因;示例加入调用、深度额度,并说明截断记录和不可信方法边界。262 收藏 -
Go 使用 utf8.RuneCountInString 统计 rune,而 len 返回字节数。本文通过中文、emoji 和组合字符说明差异,提供带字节上限、UTF-8 判断及 rune 上限的入口处理示例。262 收藏 -
Go strconv.CanBackquote 用于判断字符串能否原样放入单行反引号字符串。本文解释它会拒绝哪些字符,并给出失败时回退到 strconv.Quote 的实用写法。262 收藏 -
Go go mod edit 一次只处理一个 go.mod 文件。本文用 find 和循环批量修改模块路径,并说明 -print、-json、源码 import、replace 与 v2 主版本后缀的边界。262 收藏 -
使用 go-i18n TemplateData 向消息模板传入命名字段,对比 map 与结构体,解释 PluralCount 的独立职责、缺键处理和网页输出转义。262 收藏 -
用 Go uniseg 的 Graphemes.LineBreak 判断每个 grapheme cluster 后面是禁止、可选还是必须换行,并说明何时应改用 FirstLineSegmentInString。262 收藏 -
Go encoding/gob 按字段名匹配结构体数据。本文说明旧 gob 数据解码到新增导出字段的结构体时为何通常仍然兼容、哪些类型变化会失败,以及如何设计结构体迁移测试。261 收藏 -
用 ReadFull 和 LimitedReader 读取固定长度协议载荷,区分读取上限、读满判断与提前 EOF,说明流式写入错误、缓冲Reader和后续帧边界。261 收藏 -
Go 错误被 fmt.Errorf 包装后,直接类型断言可能失效。本文用自定义错误演示 errors.As 如何沿错误树取出目标类型,并区分 As、Is 与 errors.Join 的适用边界。261 收藏 -
用 Go html/template 完成用户输入自动转义,覆盖 HTML 文本、href 属性、脚本上下文、安全类型与不安全 URL 的边界。261 收藏 -
Go sync.OnceValue 会缓存成功结果,也会记住初始化函数的 panic。本文用调用结构、状态边界和决策表说明怎样设计可预测的一次性初始化。260 收藏 -
Go 1.27 的 constant.StringLen 可直接计算字符串常量的字节长度,不必先提取完整内容。通过原创示例区分未知值与空串,说明字面量、拼接表达式、类型检查和报告缓存的适用边界。260 收藏