Go语言技术文章
-
围绕协议兼容、CRC32C 与流式更新,说明 Go hash/crc32 中 IEEE、Castagnoli、Koopman 和自定义校验表的选择方法。204 收藏 -
os.DirFS 可以把固定目录暴露为 io/fs,但它不是 chroot 安全边界。本文从最小读取写法、fs.ValidPath 输入约束和符号链接风险讲起,并给出 Go 1.24+ 使用 os.OpenRoot 的安全替代方案。204 收藏 -
Go 1.22 起可以用 reflect.TypeFor[T]() 直接取得泛型类型的 reflect.Type。本文用可复用示例说明结构体、切片和接口类型的获取方式,并区分 TypeFor 与 TypeOf 的边界。204 收藏 -
types.MethodSet.Lookup 按包身份和方法名查找方法,未导出方法的包路径会参与唯一标识。本文用类型检查结果构造方法集合,演示怎样命中 refresh、读取 Selection.Obj,并解释包不匹配时为什么返回 nil。204 收藏 -
Go 的 utf8.RuneError 不能单独代表非法输入:DecodeRune 对空输入返回 RuneError、size=0,对非法非空字节返回 RuneError、size=1;合法的 U+FFFD 则有正常字节宽度。本文用单点解码和整段校验两条路径说明如何准确判断。204 收藏 -
encoding/json v2 的 omitzero 按 Go 零值或 IsZero 方法省略字段。本文对比 omitempty 在 nil 与空容器上的差异,并说明统一选项与反序列化边界。203 收藏 -
Go select 不会自动超时,需要把 time.After 或 time.NewTimer 放进 select,并同时处理结果、通道关闭、context 取消和后台发送阻塞。本文用原创示例说明一次等待、循环复用和生产环境的收尾边界。203 收藏 -
用 Go 的 debug/elf.File.Symbols 读取 ELF 普通符号表,处理 elf.ErrNoSymbols,并区分 Symbols 与 DynamicSymbols 的使用边界。203 收藏 -
strconv.Unquote 解析配置值失败,通常不是反斜杠本身不能出现,而是输入没有遵守 Go 字符串字面量的引号和转义规则。本文用路径配置拆开缺少引号、未知转义和重复转义三种情况,并给出统一处理与 Quote 配对的写法。203 收藏 -
ReadString在EOF时可能同时返回非空数据,过早退出会丢掉没有换行的末段。本文提供带状态的消费函数,区分空文件、空行、正常末段和读取异常,并说明CRLF、资源责任与实时追加输入的不同约定。203 收藏 -
区分 PE 结构、COFF 符号、DWARF 与 Go 构建记录,使用只读检查器和同源构建对照定位链接参数影响,说明 -s、-w 的作用及信息缺失时能够保留的结论。203 收藏 -
Go http.Transport.ReadBufferSize 用于调整 HTTP 客户端 Transport 读取连接时使用的缓冲区;零值沿用当前默认值,正值才覆盖默认。本文给出显式配置、源码生效位置、与响应头及超时字段的边界,以及调参前后的工程清单。203 收藏 -
Go 的 json.Valid 接收 []byte 并返回 JSON 语法是否有效的布尔值,适合做输入预检,但不负责把字段映射到结构体。本文用一个边界排查场景说明 Valid 与 Unmarshal 的分工。203 收藏 -
Go text/template.Option 的 missingkey 配置决定模板访问缺失 map 键时是保留默认结果、写入零值,还是让 Execute 返回错误。本文用最小示例对比三种行为,并给出升级模板调用方时的回归清单。203 收藏 -
用一个阈值查询小工具说明 Go slices.BinarySearch 的返回值、升序前提、插入位置语义和边界处理,帮助把标准库 API 组合成可复用的业务函数。203 收藏