如encoding/json
包文档中所述,
Marshal以递归方式遍历值v。 如果遇到的值实现了Marshaler接口 并且不是nil指针,Marshal调用它的MarshalJSON方法 生成JSON。
这次测试究竟在哪里in the code?
另一方面,encoding/json
如何检查v
类型的值t
是否实现了Marshaller
接口?
答案 0 :(得分:2)
这里:
Golang encoding/json Marshaler
if t.Implements(marshalerType) {
return marshalerEncoder
}
编辑: 上面的链接已更新为指向特定版本的Go,正如@ dave-c在下面的评论中指出的那样。