如何为 Go 中的自定义切片类型添加元素并保持 JSON 兼容性

张开发
2026/4/21 3:25:22 15 分钟阅读

分享文章

如何为 Go 中的自定义切片类型添加元素并保持 JSON 兼容性
本文详解如何为 Go 中基于 []*T 定义的命名切片类型如 type MyTypes []*MyType正确使用 append同时保留其原生 JSON 序列化行为并为其添加实用方法。 本文详解如何为 go 中基于 []*t 定义的命名切片类型如 type mytypes []*mytype正确使用 append同时保留其原生 json 序列化行为并为其添加实用方法。在 Go 中为切片定义命名类型如 type MyTypes []*MyType是实现方法绑定与接口满足的常用模式。但初学者常误将该类型当作“包装器”进而错误地返回其指针如 *MyTypes导致无法直接使用 append —— 因为 append 仅接受底层为切片类型的实参而 *MyTypes 是指针类型其底层并非切片。关键在于MyTypes 本身已是切片类型别名无需额外包装或取地址。只要函数返回 MyTypes而非 *MyTypes即可无缝使用 append且完全兼容标准 JSON 编组json.Marshal 会将其视为普通 []*MyType输出为 JSON 数组。以下是修正后的完整示例 文小言 百度旗下新搜索智能助手有问题问小言。

更多文章