Go语言技术文章
-
Go 升级后 bufio.Scanner 的分行结果、token 数量或错误表现发生变化时,先固定工具链和输入,再核对 SplitFunc、Buffer、Bytes 生命周期与 Err 结果,避免把输入边界误判为版本回归。262 收藏 -
netip.Addr 中的 192.0.2.1 与 ::ffff:192.0.2.1 可能指向同一个 IPv4,但前者是 IPv4、后者是 IPv4 映射 IPv6,因此直接比较不会相等。本文用最小复现解释 Is4、Is4In6、BitLen 与 Unmap 的关系,并给出 map 键和回归测试的处理方式。261 收藏 -
用 Go html/template 完成用户输入自动转义,覆盖 HTML 文本、href 属性、脚本上下文、安全类型与不安全 URL 的边界。261 收藏 -
Go 的 os.File 是文件句柄,不是可直接填写字段的配置结构。本文用独立配置表达可选权限、偏移、截断和同步策略,并说明打开、写入、失败处理与关闭的职责边界。260 收藏 -
Go encoding/json 解码部分更新请求时,普通字段容易把缺失和显式 null 压成同一个零值。本文用 Optional[T] 保留 Present、Null、Value 三种状态,再用 map[string]json.RawMessage 处理动态字段,并说明对象复用与 omitempty 的边界。260 收藏 -
Go iter.Pull2 的第三个返回值 valid 才表示当前 pair 是否有效,错误可以作为第二个值正常传递。本文用一个带错误值的 Seq2 示例说明自然结束、错误值和 stop 清理之间的区别。259 收藏 -
解释 Go x509.Certificate.CreateCRL 的签发证书、吊销条目、私钥和时间参数,并说明旧接口与 CreateRevocationList 的标准兼容边界。257 收藏 -
Go 1.24 的 runtime.AddCleanup 适合为资源包装对象提供 GC 兜底,但 nil 指针、反向持有和退出时机都不能含糊处理。本文用分支基线和一个可显式关闭的文件包装器,说明异常路径应该如何收口。256 收藏 -
说明 time.Time.Round(0) 如何去掉单调时钟信息,区分 Equal、== 和 map 键规则,提供同源副本示例,并解释序列化、精度和 Location 一致性的边界。256 收藏 -
Golang · Go教程 | 4天前 | 错误处理 · go · Go encoding/base64 CorruptInputError io.ErrUnexpectedEOF NewDecoder
围绕 Go base64.NewDecoder 的流式读取,区分正常 EOF、残缺量子导致的 io.ErrUnexpectedEOF 与非法字符导致的 CorruptInputError,并给出先消费 n 再处理 err 的代码模式。256 收藏 -
通过原地压缩减少结果切片分配,并明确相邻去重、返回长度、别名共享和长期容量保留的取舍。256 收藏 -
Go 的 sql.Rows 出现连接池等待或资源未释放时,先确认 Rows.Close 与 Rows.Err 的生命周期,再结合 DB.Stats、goroutine 和驱动日志定位真正的拥有者。本文给出可复用的代码与排查顺序。256 收藏 -
ExtensionsByType 并不返回空字符串,而是按 MIME 类型返回扩展名切片。本文区分 nil、空字符串和 error,并说明 TypeByExtension 与 AddExtensionType 的使用边界。256 收藏 -
Go testing.T.Attr 的键不能包含 Unicode 空白,值不能包含回车或换行;违规时会让测试失败并跳过该属性。本文解释约束来源、错误模型,以及如何把自由文本稳定映射为可记录的单行属性。255 收藏 -
Go crypto/mlkem 的密钥对象不能用任意内存序列化代替官方编码。本文说明封装公钥与解封装私钥的 Bytes、New... 构造函数、ML-KEM-768/1024 的长度约束,以及字节往返时的错误处理和保密边界。255 收藏