Go语言技术文章
-
解释Timer.Stop后仍看到事件的原因,区分新旧通道语义、已接收数据与AfterFunc回调,并通过单一拥有者和退出确认示例说明取消协议及旧排空写法限制。401 收藏 -
Go 读取 ShiftJIS 日文 CSV,可先用 x/text 解码为 UTF-8,再交给 csv.Reader 逐条解析。本文给出文件导入函数,说明列数、替换字符和错误处理边界。401 收藏 -
Go roaring 可以用 WriteTo 和 ReadFrom 在 io.Writer/io.Reader 之间传输 Roaring 位图,也可以用 MarshalBinary 和 UnmarshalBinary 处理完整字节切片。本文说明两种入口、错误处理、容量估算与 32/64 位兼容边界。401 收藏 -
Golang · Go问答 | 1星期前 | 标准库 · Go问答 · 版本升级 · Go Base strconv.ParseInt Go升级 bitSize NumError ErrRange ErrSyntax ParseInt行为
Go 升级后 strconv.ParseInt 结果看似变化,通常应先比较输入字符串、base、bitSize 和 error 处理。本文用一套可复现的排查入口拆开前缀推断、位宽范围与 NumError,帮助判断差异来自调用契约还是升级本身。401 收藏 -
io.LimitReader 达到上限后也会返回 EOF,这个 EOF 不能单独证明源数据自然结束。本文用 max+1 探测窗口区分恰好达到上限、超限截断和底层读取错误,并给出可复用的 Go 实现与测试边界。401 收藏 -
Go 的 archive/tar.Reader.Next 会自动丢弃当前条目剩余数据并处理块填充,再返回下一个 Header。本文区分 Header、Read、Next 和两个位置的 io.EOF,并补充只读前缀与 ErrInsecurePath 的安全边界。401 收藏 -
Go 1.22 之后,http.ServeMux 用模式覆盖的请求集合判断优先级,而不是按注册顺序或通配符名称决定。本文比较静态路径、单段通配、剩余路径通配、方法和主机,并说明如何识别冲突模式。400 收藏 -
Go 1.27 把 go fix 中的 waitgroup analyzer 改名为 waitgroupgo。本文区分命令入口与分析器名称,说明如何用 go tool fix help 和 go fix -diff 确认参数,并判断哪些 WaitGroup 写法适合现代化、哪些场景需要人工复核。400 收藏 -
nil map 读取缺失键返回零值,写入却会 panic。以表单状态为例说明 nil 与空 map、写入方法初始化、函数返回新 map 以及嵌套 map 的责任边界。400 收藏 -
bytes.EqualFold 可以比较两个字节切片在 UTF-8 语义下是否经过简单 Unicode 大小写折叠后相等。本文从 ASCII 标识的实际场景出发,解释长度、空切片、非字母字节和非 UTF-8 数据的边界,并给出带封装函数的 Go 示例。400 收藏 -
Go net/url.JoinPath 会合并并清理 URL 路径,但路径段应先用 PathEscape 处理。本文说明特殊字符、斜杠、点段、查询参数和 ResolveReference 的边界。400 收藏 -
reflect.Value.SetString 只有在目标值有效、Kind 为 String 且 CanSet 为 true 时才适合调用。本文说明指针取 Elem、结构体字段和未导出字段的边界。400 收藏 -
Go 拼接带有路径参数的 URL 时,直接把原始字符串放进 Path 容易让斜杠、空格或问号改变路径结构。本文说明 net/url.PathEscape 的正确边界,并对比 QueryEscape、url.URL.Path、RawPath 和重复转义问题。400 收藏 -
Go strings.Cut 不只是把字符串分成两段,还能通过 found 判断分隔符是否存在。本文用配置项解析示例说明如何保留原始输入、区分缺失分隔符与空字段,并用 %w 保留底层错误原因。400 收藏 -
strconv.ParseInt 的 base=0 会按 0b、0o、0x 等前缀推断进制,而固定 base 时输入契约不同。本文说明 base、bitSize 与 NumError 的关系,帮助你区分非法数字和范围溢出。400 收藏