Go语言技术文章
-
Go 的 url.URL 同时设置 Path 和 Opaque 时,String 会根据 URL 形态选择层级路径或 scheme:opaque 表示,两个字段不会简单拼接。本文用最小结构对比、查询参数边界和回归清单说明正确构造方式。170 收藏 -
Go 1.27 的 encoding/json/v2 遇到同一字段既可能是 42 又可能是字符串 42 时,可用局部自定义类型兼容两种表示,并严格拒绝小数、空白和越界值。170 收藏 -
pkg.go.dev API 可以直接返回 Go 模块的最新带标签版本。本文用 module、versions 两个接口和 Go 客户端示例,说明如何读取 version、isLatest,如何区分指定版本、main/master 分支和版本列表。170 收藏 -
bufio.Reader.Peek 返回的是内部缓冲区视图,下一次读操作后就可能失效。本文用一个协议头判断场景说明 Peek、Read、copy 和 ErrBufferFull 的边界。169 收藏 -
Go encoding/gob 不会传输 nil 指针,但当流中存在指针字段时,Decoder 会为 nil 目标字段分配对象。本文用 Envelope 示例拆开这层语义,并给出 HasMeta 加值字段的传输结构,避免把隐式分配误当成业务状态。169 收藏 -
Go 的 encoding/csv 默认会根据首条记录约束列数。面对供应商字段增减、尾列缺失的文件,可设置 FieldsPerRecord=-1 放开列数检查,再结合 record 长度、ErrFieldCount 和行号完成可追踪的容错处理。169 收藏 -
Go 测试里 t.Setenv 会修改整个进程的环境变量,并在测试清理阶段恢复原值,因此不能和 t.Parallel 或并行祖先一起使用。本文从失败现象、执行时间线和可复现代码出发,说明如何拆分测试、验证恢复结果,并处理需要并发覆盖的配置场景。168 收藏 -
Go 文件写入后为什么还要区分 Sync 和 Close?本文从 Write、Sync、Close 的调用链出发,说明落盘确认、defer 顺序与错误返回值该怎么处理。168 收藏 -
用 Go fuzzing 为解析函数补齐边界输入:从 f.Add 种子、限定 fuzz 时长,到把失败语料固化为可重复的回归测试。168 收藏 -
Go 的 encoding/xml 遇到带嵌套标签的混合文本时,直接映射结构体容易忽略空白。本文用 Token、CharData、XMLName 和命名空间字段完成可控读取。168 收藏 -
Windows 下 filepath.Match 会把反斜杠当作路径分隔符,而不是转义符。本文用可运行示例说明本地路径、glob 规则和统一斜线路径该如何分工。168 收藏 -
Go 交叉编译默认关闭 cgo,CGO_ENABLED=0 还会排除 import C 的文件。本文用构建约束、CC 交叉编译器和验证矩阵说明哪些功能会消失,以及如何安全选择纯 Go 或 cgo 方案。168 收藏 -
Go 泛型约束中的 ~T 表示底层类型为 T 的类型集合。本文用 UserID、类型别名和联合约束说明 ~int 的匹配范围,并解释 ~MyInt、重叠集合与非基本接口为什么会编译失败。168 收藏 -
Go 的 embed 在编译期读取资源;交叉编译不会自动改写同一文件,平台差异应通过构建约束选择不同源文件。168 收藏 -
用 sha256.New 配合 io.Copy 流式读取大文件,计算 SHA-256 摘要并处理字节数、读取错误与自定义缓冲区。168 收藏