Go教程技术文章
-
binary.PutUvarint 把 uint64 编码到调用方提供的固定字节缓冲区,并返回实际写入长度。本文说明缓冲区容量、buf[:n] 的使用、Uvarint 解码边界,以及它与 AppendUvarint 的选择。137 收藏 -
Go types.Tuple 保存函数参数或返回值的有序变量列表。本文说明怎样通过 Signature.Results、Tuple.Len、Tuple.At 逐项读取多返回值,再用 Var.Name、Var.Type 和 Var.Pos 配合 token.FileSet 输出名称、类型与声明位置,并处理匿名返回值和空结果。137 收藏 -
token.Pos.IsValid 只回答源码位置是否不是 NoPos,不负责判断位置属于哪个文件。本文从零值边界出发,说明 AST 节点位置的安全判断、FileSet 归属与 Position 行号有效性的区别,并给出工具代码中的防误用写法。137 收藏 -
Go 的 goroutineleak profile 可以通过 net/http/pprof 暴露在 /debug/pprof/goroutineleak,再用 go tool pprof 查看泄漏栈。本文说明接入入口、抓取方式、采样对照和结果解读边界。137 收藏 -
说明 gofmt 只读差异检查、生成目录排除与生成标记的区别,提供处理文件路径、工具错误及空检查集合的 Bash CI 示例。137 收藏 -
Go strings.FieldsFunc 通过 rune 判定函数按自定义规则切分文本,连续分隔符会合并,首尾分隔符会被丢弃,结果字段始终非空。本文用原创示例说明多种分隔符、Unicode 空白以及它和 strings.Split 的边界差异。136 收藏 -
Golang · Go教程 | 3星期前 | 标准库 · 错误处理 · go · 数据导入 · csv Go Reader encoding/csv FieldsPerRecord ErrFieldCount
Go encoding/csv 默认会按首条记录推断字段数,字段数量变化时返回 ErrFieldCount。本文说明 FieldsPerRecord 的三种语义、可变字段 CSV 的正确配置,以及如何保留单条读取中的记录和错误。136 收藏 -
使用 go-pretty/v6/table 把同一组表头和数据行导出为 Markdown,说明 AppendRows、页脚、RenderMarkdown、PadContent 以及列数和特殊字符边界。136 收藏 -
Go archive/tar 的 Header.Format 是 Reader.Next 对归档格式的尽力判断,可能返回 USTAR、PAX、GNU 或 Unknown。本文说明如何读取格式、比较能力边界,并在重新写入时显式选择兼容格式。136 收藏 -
Go 结构体切片不能直接依赖 slices.Index 做字段条件查询,slices.IndexFunc 更适合表达按 ID、状态或组合条件查找第一条记录。本文用完整示例说明回调、-1 边界、重复匹配和 map 选型。136 收藏 -
Go database/sql 读取多个结果集时,要在当前结果集内用 Next 和 Scan,读完后用 NextResultSet 切换,并在两个 false 边界检查 Rows.Err。本文给出不依赖具体存储过程语法的通用读取骨架。136 收藏 -
用 Go archive/tar 解包外部归档时,先用 filepath.IsLocal 拒绝绝对路径和 .. 越界路径,再限制条目类型并安全写入目标目录。136 收藏 -
Go 切片性能优化的关键不是盲目把容量设得很大,而是根据可估算的数据量使用 make 预留容量;本文结合追加、未知数量和基准测试说明 len、cap 与 append 的配合。135 收藏 -
Go 1.27 工具链中的 waitgroupgo 更适合做 WaitGroup 代码现代化迁移。本文区分 go vet 检查与 go fix 差异预览,说明 Add、goroutine、Done 组合的修复顺序,以及闭包、错误处理、递归启动和旧工具链兼容边界。135 收藏 -
sync.Map.CompareAndDelete 可以在 key 的当前值仍等于旧值时删除映射项,适合处理并发缓存和临时索引清理。本文说明 bool 返回值、不可比较旧值、缺失键和与普通 Delete 的边界。135 收藏