Go语言技术文章
-
Go反射IsNil只能用于特定Kind。通过状态分类和接口层次示例,区分无效Value、nil指针、普通零值与空切片,避免通用判空逻辑触发panic或误判。200 收藏 -
Golang · Go教程 | 13小时前 | 标准库 · 错误处理 · Go教程 · 数据导入 · csv Go encoding/csv csv.Reader 表头 FieldsPerRecord ParseError 字段位置
Go 的 encoding/csv 不会自动跳过表头。本文说明如何先消费第一条记录,再按表头建立字段名到 0-based 下标的映射;同时比较固定字段数与变长字段数的设置,并处理 EOF、ErrFieldCount、ParseError、FieldPos 和 InputOffset。200 收藏 -
Go大CSV可用Reader循环同步处理,避免全量保存。本文给出三字段统计示例,说明字段检查、ReuseRecord所有权、超大记录与下游积压如何影响内存上界。199 收藏 -
Go 中 json.Valid 通过并不代表 json.Unmarshal 一定成功。本文从语法有效、目标类型匹配和目标参数合法三个层次,说明如何用错误类型、字段路径和偏移量定位解码失败。199 收藏 -
Go 正则遇到非法 UTF-8 字节时不会自动报错,而是按 utf8.RuneError 解释输入。本文从匹配现象、编码策略和字节索引三个边界说明如何定位问题,并给出严格拒绝与规范化的 Go 写法。199 收藏 -
Go html/template 会按 URL 上下文处理 href,但业务协议允许列表仍应在数据层明确限制。本文用普通 string、http/https 白名单和根路径规则,说明如何拒绝危险协议并保留模板转义。199 收藏 -
Go 接入 HTTP/3 时,优先用 quic-go 的 http3.Transport 或 http3.Server;只有需要自定义 UDP、共享 socket 或多协议分流时,再接入 quic.Transport。199 收藏 -
Go charmap 的 DecodeByte 面向 8-bit 单字节字符集,逐个 byte 查表即可;本文说明它与 NewDecoder、多字节编码和 UTF-8 处理的边界。199 收藏 -
围绕 Go bufio.Reader.Discard 说明完整跳过、部分跳过、EOF 和底层读取错误的判断方式,并给出固定字节跳过的安全封装与参数边界。199 收藏 -
Squirrel 将 []byte 视为单个数据库参数,而 byte 是 uint8 的别名,因此 []uint8 也不会自动展开为 IN。通过二进制值与数字集合示例,说明显式转换、空集合和参数绑定的边界。199 收藏 -
解释 Go adler32.New 返回的 hash.Hash32 如何通过 Sum 追加 4 字节摘要,为什么传入切片的前缀会保留,以及 Checksum、Sum32 和 Sum 的选择边界。199 收藏 -
go/ast.ImportSpec 只能告诉你导入声明长什么样,不能单独证明包名是否被引用。本文用 go/types 的 Defs、Uses、Implicits 连接语法节点与语义对象,说明普通、别名、空白和点导入的判断边界。199 收藏 -
从共享状态边界出发,对比普通 map 配合 Mutex、RWMutex 与 sync.Map 的适用条件,再用竞态检测、吞吐和延迟指标复查选择。198 收藏 -
Go 服务收不到 SIGTERM,通常不是信号本身失效,而是目标 PID、signal.Notify 注册、容器 PID 1 或退出清理边界出了问题。本文给出一套从进程到 supervisor 的排查顺序。198 收藏 -
在 os.OpenRoot 建立的受限目录内使用 Root.Lstat,判断路径本身是否为符号链接,并与 Root.Stat 的跟随语义做清晰区分。198 收藏