跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 请教一个 go 语言的问题
未分類
28 3 月 2020

请教一个 go 语言的问题

请教一个 go 语言的问题

資深大佬 : rimutuyuan 20

type Person struct {     Name string `json:"name"` }  var p *Person  s := `{"name": "123"}` fmt.Println(json.Unmarshal([]byte(s), p))  // 报错 fmt.Println(json.Unmarshal([]byte(s), &p)) // 成功 

var 声明变量,p 应该是 nil,为什么取地址 json 反序列化反而成功了,不是很理解。

大佬有話說 (4)

  • 資深大佬 : reus

    p 是 nil,所以报错
    &p 不是 nil,所以成功

  • 資深大佬 : kidlj

    Unmarshal 第二个参数必须是个指针,而且不能为 nil,但是 p == nil,所以第一个报错。

    “`
    func (d *decodeState) unmarshal(v interface{}) error {
    rv := reflect.ValueOf(v)
    if rv.Kind() != reflect.Ptr || rv.IsNil() {
    return &InvalidUnmarshalError{reflect.TypeOf(v)}
    }
    …

    }
    “`

    至于第二个,&p 是指向 p 变量(本身是个指针)的指针,&p 既是指针,又不是 nil,所以不报错。

  • 資深大佬 : janxin

    报错信息有的啊,因为是 nil…

  • 資深大佬 : brzhang

    问一个问题,空值一定是 nil 吗?

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具