Go语言技术文章
-
用 Go archive/zip 创建 ZIP 时,通过 FileHeader.Method 选择 Store 或 Deflate,并了解 RegisterCompressor 调整 Deflate 的边界。303 收藏 -
Go WaitGroup 的正向 Add 在计数器为零时必须先于 Wait;把 Add 放进新 goroutine 会让 Wait 可能提前返回,甚至触发并发误用。本文用任务登记、风险路径和审查清单说明可靠写法。303 收藏 -
Go 的 archive/tar.Writer.AddFS 可以直接接收 fs.FS,遍历目录树并保持相对路径写入 tar。本文用 os.DirFS 拆解归档根目录、AddFS、Close 和生产环境错误处理边界。303 收藏 -
自定义http.Client需要在请求前安装Gock拦截器。本文给出无真实网络回退的完整Go测试示例,说明实例接线、请求匹配、RestoreClient恢复与全局模拟清理的不同职责。303 收藏 -
Go jsonschema 校验数字时,真正影响 integer、number 和范围判断的,不只是 Schema,还包括 encoding/json 把输入解码成什么 Go 类型。本文拆开 float64、json.Number 和整数类型的取舍。303 收藏 -
Go bloom/v3 用 AddString 加入字符串、用 TestString 查询成员。本文从字节切片写法迁移到字符串方法,说明容量、误判率、精确回退和并发访问边界。303 收藏 -
Go select 不会按 case 书写顺序保证优先级。本文用先探测高优先级 channel、再进入等待 select 的方式增加软优先级,并说明关闭、取消和严格优先级的边界。303 收藏 -
Go encoding/csv 可以用 Reader.Comment 忽略指定格式的注释行,连续分隔符产生的空字段仍会保留为字符串空值。本文给出逐条读取、字段数约束、空白处理和解析错误的生产写法。303 收藏 -
Go encoding/csv.Reader 会自动忽略真正的空行,但只含空格的记录仍可能被读出。本文用一个可调整的空记录判断函数区分空行、空字段和有效记录,并处理 EOF、解析错误与可变字段数。303 收藏 -
说明Go types.Scope.Innermost的位置查询方法,用完整示例连接源码字节偏移、FileSet与Info.Scopes,并区分nil结果、当前层名称与可见对象查找。303 收藏 -
通过显式存在性判断处理Go fmt.Appendf可选字段,保留空串、零值和false,管理分隔符及返回切片,并说明文本格式与JSON编码的区别。303 收藏 -
围绕 encoding/binary 的固定字段解析,对比 ByteOrder 直接读取、binary.Decode 与 binary.Read 的适用边界,并给出复用批处理结果切片、减少额外分配的实现方式。303 收藏 -
Go 交叉编译时,go/types 的类型尺寸应跟随目标 GOARCH,而不是直接复用分析程序所在宿主机的字长。本文解释 SizesFor、StdSizes、WordSize 和 MaxAlign 的关系,并给出可落地的选择方式。303 收藏 -
Go encoding/csv 解析失败时,FieldPos 可以给出最近一次 Read 返回记录中字段的起始行列,InputOffset 可以记录当前输入流的字节边界。本文把两者与 ParseError 组合起来,定位坏行并说明多字节字符、跨行引号和字段索引越界的处理方式。303 收藏 -
Go encoding/csv 默认会用第一条记录的字段数约束后续行。把 Reader.FieldsPerRecord 设为 -1 后,可以保留每行原始字段,再在读取循环中统计字段数并单独处理解析错误。303 收藏