Go语言技术文章
-
Go x/text/search 的 IgnoreCase 不是简单把两边字符串转成小写,而是保留原文并按语言规则完成大小写不敏感匹配。本文从一个小型搜索工具出发,说明它与 ToLower、Loose、Exact 的区别。439 收藏 -
Go x/text/width 的 Widen 处理半角片假名时,半角浊音符号可能变成组合标记。本文说明宽度映射与 NFC 规范化的区别,并给出原文、展示值和比较键的分层写法。439 收藏 -
Go debug/dwarf.Reader 按前序顺序读取 DIE,Children 表示后面有子树,Tag 为零表示当前子列表结束,nil 则表示整个 info section 读完。本文用深度计数器和 SkipChildren 讲清遍历写法。439 收藏 -
Go 的 net/url.URL.Port 只返回 URL 中显式写出的端口,不会自动补出 http 或 https 的默认端口。本文用一段可复用的解析代码说明显式端口、默认端口、IPv6 主机和异常输入的处理边界。439 收藏 -
用 testing.B.ReportMetric 把累计计数换算成每次操作或按时间统计的自定义基准指标,并处理单位、覆盖和并行计数边界。439 收藏 -
UnreadRune 不是任意读取后的撤销按钮:它要求最近一次方法调用是 ReadRune,而且一次成功回退后不能连续再次回退。本文用逐字符解析示例说明调用契约、失败原因和稳定写法。439 收藏 -
go-cmp 比较含未导出字段的结构体时 panic 不是库失效,而是默认拒绝猜测内部字段语义。本文按字段用途选择 IgnoreUnexported、自定义 Comparer 或 AllowUnexported。438 收藏 -
Go x/text/unicode/bidi 处理的是双向文本的段落与视觉 runs,不是把右向字符串从头到尾反过来。本文用混合文本说明 ReverseString 的边界,并给出 Paragraph.Order 与 Line 的排查写法。438 收藏 -
Go 中 goroutine 把结果发送到无人接收的 channel 时,发送操作可能永久阻塞。本文用 context 的取消分支修复泄漏,并用固定取消次数、goroutine 增量和资源边界说明何时该用缓冲区、何时必须让底层工作也支持取消。438 收藏 -
Go go env GOTOOLDIR 返回的是当前宿主工具链目录,不是 GOOS/GOARCH 目标目录。本文用 go env、工具文件检查和最终二进制复查,建立一套核对交叉编译路径的排障流程。438 收藏 -
Go 的 math.Signbit 判断浮点数符号位,因此能识别负零;x < 0 判断的是数值顺序,负零与零相等所以不会命中。本文用 Copysign、Float64bits 和 NaN 边界说明两种判断的使用场景。438 收藏 -
Go oggvorbis.Reader.Read 返回的是按声道交错排列的 float32 样本值。本文用双声道示例说明如何按 L0、R0、L1、R1 拆分左右声道,并处理短读、EOF、声道数和完整帧边界。438 收藏 -
Go 的 RawStdEncoding 是使用标准 Base64 字母表但省略等号补位的编码器。本文说明它与 StdEncoding、RawURLEncoding 的区别,给出无填充文本的编码、解码、错误处理和边界选择。438 收藏 -
默认 bufio.ScanLines 能识别 LF 与 CRLF,却不会把单独 CR 当作行结束。本文实现一个兼容混合行尾的 SplitFunc,并说明缓冲区末尾、atEOF、长 token 与错误检查的处理方式。438 收藏 -
解释 embed.FS 与 io/fs 的逻辑路径规则,说明 Windows 也必须使用斜杠,并给出用 path.Join、ReadDir、Open 和 ReadFile 读取嵌入资源的跨平台写法。438 收藏