Go语言技术文章
-
用 Go testing.F.Add 为模糊测试准备可重复的边界输入,本文给出一个可复用的最小示例,并说明 Fuzz 回调、运行命令、失败输入和回归测试之间的边界。344 收藏 -
说明 database/sql 执行更新或删除后 RowsAffected 为 0 的正确含义,区分 WHERE 未命中、驱动返回语义和事务提交可见性,并给出可记录、可复查的处理方式。344 收藏 -
给Expr的Compile传入结构体环境,可以提前发现未知变量和字段。本文用正反规则示例区分固定结构体字段与嵌套map动态键,并说明AllowUndefinedVariables、零值及错误处理的边界。343 收藏 -
Go map 执行 clear 后 len 会变成 0,但底层桶、GC 时机和运行时堆复用会让进程内存暂时不降。本文用小实验区分清空、重建和真正释放。343 收藏 -
Go test -failfast 会在首个测试失败后停止启动新的测试,但不会把已经开始的并行测试瞬间杀掉。本文按串行、并行、清理和 CI 门禁的边界,说明如何用它快速定位失败。343 收藏 -
Go url.JoinPath 接收已转义路径元素,保留百分号编码并不异常。通过 Path、RawPath、EscapedPath 的区别和原始名称构造示例,说明斜杠、点段与重复转义的处理方法。343 收藏 -
Go net.IP.IsPrivate 可以按 RFC 1918 和 RFC 4193 判断 IPv4、IPv6 私有地址,但它不是安全属性。本文用 net.ParseIP、对照表和边界说明讲清输入、返回值与使用位置。343 收藏 -
用 Go encoding/base64.WithPadding 为协议设置自定义填充字符,区分标准填充、NoPadding 与非法参数,并说明编解码双方如何保持同一约定。343 收藏 -
解释 Go Ants 池内任务再次提交时的满池阻塞原因,给出非阻塞、有限等待和拆分池的处理方案。343 收藏 -
说明 O_TRUNC 打开时截断与 Close 释放句柄的不同职责,给出保留写入、关闭错误的覆盖写函数,并解释直接覆盖、持久化与完整替换的取舍。343 收藏 -
Go netip.Addr.IsGlobalUnicast 用来判断地址是否属于全局单播语义,但它不等于公网可达或业务授权。本文从 ParseAddr 开始,结合私有地址、唯一本地地址、链路本地地址、组播和零值样例,给出可复用的分类函数与边界清单。343 收藏 -
Go time.Date 遇到夏令时回拨时,同一个本地墙上时间可能对应两个实际时刻。本文说明 Date 的不确定性,并用 Time.Equal、UTC、Unix 秒和明确偏移建立可靠的判断与存储方式。343 收藏 -
Go net.Dialer 返回空连接时,先分清空地址、地址格式、名称解析和连接失败四个阶段。本文用 DialContext、SplitHostPort、Resolver 与错误链说明如何定位边界输入。343 收藏 -
使用 encoding/base64.NewDecoder 把 Base64 文件接入 io.Copy,边读取边解码并写入目标文件,本文同时说明文件句柄、尾部截断、非法字符和不同编码表的处理边界。343 收藏 -
Go io.MultiWriter 按顺序写入多个目标,遇到错误会立即停止。本文用失败 Writer 说明 n、err、短写和未执行目标的边界,并给出多目标尽力写入时的补偿方案。342 收藏