Go语言技术文章
-
Go JSON v2 自定义编码器按类型而非字段名匹配。以独立字段类型、MarshalToFunc 与 WithMarshalers 为例,解释调用范围、字符串编码、递归和错误处理,并明确 Go 1.25 实验接口的使用前提。207 收藏 -
encoding/json v2 的 omitzero 按 Go 零值或 IsZero 方法省略字段。本文对比 omitempty 在 nil 与空容器上的差异,并说明统一选项与反序列化边界。203 收藏 -
Go 1.26 新增 crypto/hpke 包后,可以用 KEM、KDF 和 AEAD 组合一次混合公钥加密。本文从密钥生成到 Seal/Open 闭环,说明封装信息、info、AAD 和状态上下文的关系。161 收藏 -
Golang · Go问答 | 2星期前 | CGO · 内存管理 · Go问答 · 排错 · Go Go指针 CGO runtime/cgo.Handle C指针 runtime.Pinner cgocheck
Go cgo 指针检查的关键不是把 unsafe.Pointer 换成别的类型,而是确认内存归属、内部是否含 Go 指针以及 C 保存地址的时长。本文对比临时借用、C 内存复制、runtime/cgo.Handle 和 runtime.Pinner 的适用边界。392 收藏 -
围绕 Go http.Transport 的 HTTP 代理 CONNECT 握手,说明固定请求头与按目标动态请求头的配置边界,并整理旧代码迁移和回归检查清单。175 收藏 -
Go 测试套件中,慢测试可以通过 testing.Short 与 t.Skip 在 go test -short 时跳过、完整模式时执行。本文说明标志关系、代码组织、与自定义环境变量的取舍,以及不该交给 -short 解决的边界。161 收藏 -
Go 的 hex.DecodeString 不会自动忽略十六进制字符串中的空格。本文用 strings.Fields 统一清理空白,再检查空输入、奇数长度和非法字符,并说明什么时候不应该静默删除分隔符。473 收藏 -
Go 的 json.Decoder.Token 返回的是 JSON 词法 token,Delim 负责标出数组和对象边界,More 只用于判断当前容器是否还有元素。本文从 Token 看似错位的现象出发,说明如何用 Token、More 与 Decode 组合读取 JSON 流。186 收藏 -
Golang · Go问答 | 2星期前 | 标准库 · JSON · Go问答 · Go encoding/json offset json.Unmarshal Field JSON排错 UnmarshalTypeError
Go 的 JSON 类型错误不要只看错误字符串。本文用 UnmarshalTypeError 的 Field、Offset、Value 和 Type 四个字段,把嵌套字段与原始 JSON 字节位置对应起来,并说明类型错误后的部分填充边界。414 收藏 -
Go 用 ParseRequestURI 解析无前导斜线的相对引用失败,需先区分请求路径、通用引用与 HTTP 绝对地址。本文给出对应解析封装,说明 URL 字段、双斜线及 fragment 的差异,避免自动补协议改变含义。204 收藏 -
Go 使用 atomic.Uint64 累计独立事件时,需要统一 Add 与 Load 访问并共享对象指针。本文用完整示例说明快照、任务结束、禁止复制及64位对齐,并划清溢出、热点竞争和多字段一致性的边界。340 收藏 -
Go 的 io.NewSectionReader 可以把支持 ReaderAt 的数据源包装成固定区间读取器。本文用分段文件读取场景说明 offset、length、Read、ReadAt、Seek、Size 与 EOF 的关系。424 收藏 -
用 Go BinaryMarshaler 与 BinaryUnmarshaler 实现自定义二进制类型,明确输入副本、独立编码结果、错误原子性以及长度和版本处理,避免切片共享带来数据联动。283 收藏 -
用 Go io.TeeReader 可以在读取文件、请求体或消息流时同步写入 hash.Hash,边读边计算 SHA-256 而不必先缓存完整输入。本文说明完整消费、摘要结果和写入错误之间的关系,并比较 TeeReader、MultiWriter 与 io.ReadAll 的适用场景。248 收藏 -
Go ExtraFiles 的下标对应子进程 3+i,而非父进程原描述符。本文说明标准流、平台限制与关闭责任,并用双文件示例区分映射错误、读取偏移和总数误判。356 收藏