json.Marshal注释里面的这2个地方怎么理解

18328048335 · 2022-06-30 20:03:03 · 2784 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2022-06-30 20:03:03 的主题,其中的信息可能已经有所发展或是发生改变。

  1. // The nil pointer exception is not strictly necessary
    // but mimics a similar, necessary exception in the behavior of
    // UnmarshalJSON.
    我英文水平有问题吗?翻译如下: 空指针异常不是必要的,但它在UnmarshalJSON的行为中模仿了一个相似的,必要的异常。 我怎么感觉不通顺呢?也没法理解。

  2. // An anonymous struct field of interface type is treated the same as having
    // that type as its name, rather than being anonymous.
    interface类型的匿名字段?这是允许存在的吗?


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2784 次点击  
加入收藏 微博
5 回复  |  直到 2022-07-12 23:15:21
18328048335
18328048335 · #1 · 3年之前

来个大佬教教我吧

EddyLee1010
EddyLee1010 · #2 · 3年之前

你都看源码包了,你才是大佬

Mericusta
Mericusta · #3 · 3年之前

大概的意思应该指的是: 1 json.Marshal 遇到空指针不会抛出异常,你可以看源码对空指针写的是 null,但是反序列化时空指针是会抛出异常的 2 json.Marshal 必须具名,否则用其类型作为名称

18328048335
18328048335 · #4 · 3年之前
MericustaMericusta #3 回复

大概的意思应该指的是: 1 json.Marshal 遇到空指针不会抛出异常,你可以看源码对空指针写的是 null,但是反序列化时空指针是会抛出异常的 2 json.Marshal 必须具名,否则用其类型作为名称

第一点我看源码时确实发现了它是这样子的,我总感觉它的英文描述不对劲。第二点也是,他要是不提interface我就没有问题了。

learningboy
learningboy · #5 · 3年之前

第二句我感觉说的是结构体嵌入?

type A int
type B struct {
  A
}

这里的 B 有一个匿名字段,该字段名默认为和它的类型相同,因此名称为 A </br> anonymous 修饰的是 filed 的吧? 但是 interface 类型的结构体字段是什么意思,指的是 A 是一个接口类型?

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传