Go语言技术文章
-
Golang · Go问答 | 3星期前 | 标准库 · JSON · go · 故障排查 · 故障排查 Go encoding/json JSON指针 json.InvalidUnmarshalError
Go json.Unmarshal 的目标参数必须是非空指针。本文区分结构体值、nil 接口、nil 指针和指向指针变量的外层指针,并用 errors.As 识别 InvalidUnmarshalError,避免把参数错误与 JSON 语法或字段类型错误混为一谈。152 收藏 -
讲清 Go crypto/mldsa.PublicKey.Bytes 如何导出可分发的 ML-DSA 公钥编码,怎样携带参数集并用 NewPublicKey 恢复对象,以及如何提前判断长度和参数错配。152 收藏 -
Go test -json 可将测试输出保存为逐行 JSON 事件。本文给出保留退出码和 stderr 的采集脚本,说明测试事件与构建事件的区别,以及运行标识、字段映射、并发归组和日志接入的注意事项。152 收藏 -
unique.Make 的第一道边界由 comparable 类型约束决定,第二道边界要由业务代码自己定义。本文用高并发标签去重场景拆开编译期约束、运行时校验、相等语义和并发使用方式,给出可直接复用的规范化入口。152 收藏 -
Go mime.WordDecoder 遇到自定义字符集时会调用 CharsetReader。回调返回 nil,error 会把错误交给 DecodeHeader;返回 nil,nil 则违反必须提供 Reader 或 error 的契约,不能当作跳过转换。本文用最小回调解释失败原因、定位方法和修复方式。152 收藏 -
Go html/template 会按 HTML 上下文自动转义用户输入。本文从一次渲染结果异常的排查经历出发,区分安全转义、字段为空和 Execute 错误,并给出可复用的处理方式。152 收藏 -
plugin.Lookup 找不到导出符号时会返回原始错误。本文说明如何用 fmt.Errorf 的 %w 补充插件和符号上下文,同时把 Lookup 错误、符号类型断言错误和上层错误链分开处理。152 收藏 -
strings.Builder 可以通过 Reset 复用同一个构建器对象,但不能把 Reset 当成保留底层容量的承诺。本文说明安全复用、Grow、String、非零值复制和 bytes.Buffer 选择边界。151 收藏 -
Go net.Dialer 用 Timeout 与 DialContext 限制建连等待,多个截止点取较早者;示例解释父级取消、连接关闭,以及 TLS 和读写超时的独立边界。151 收藏 -
Go crypto/ecdh PrivateKey.Bytes 返回的是原始私钥编码副本,不是 PEM 或 PKCS#8 容器。本文用同曲线回读示例说明导出、校验、存储和敏感字节生命周期的边界。151 收藏 -
Go x/text/search 的 IndexString 返回首次匹配的字节半开区间,未命中时返回 -1,-1。本文用 UTF-8 混合文本说明 Matcher、Backwards、Anchor 与 Pattern 复用,避免把字节下标误当成字符序号。151 收藏 -
Go strings.CutPrefix 同时返回去除固定前缀后的文本与匹配标志。通过批量标识解析示例,说明空前缀、空余串、大小写、重复前缀和不匹配原文的处理,并分离前缀判断与业务校验。151 收藏 -
Go vet 报告和编译器错误都可能返回非零状态,但处理边界不同。本文从包构建、静态分析、退出状态和 CI 分流几个角度说明如何判断与处理。151 收藏 -
Go init 顺序变化通常不是 init 语法失效,而是包依赖、包级变量依赖、源文件呈现顺序或隐藏副作用发生了变化。本文给出排查边界,并用显式 Setup 替代关键启动动作。151 收藏 -
sql.Named 没有把 SQL 字符串改写成统一语法,命名参数是否生效取决于名称、占位符和数据库驱动三者是否匹配。本文用最小示例给出排查顺序。151 收藏