• Go-json解码到结构体-踩坑


    package main
    
    import (
    	"encoding/json"
    	"fmt"
    )
    
    type User struct {
    	Name string `json:"name"`
    }
    
    func main() {
    	var u User
    	fmt.Printf("u=%+v, &u=%p
    ", u, &u) //output: u={Name:}, &u=0xc00003e230
    	json.Unmarshal([]byte(`{"name":"polaris"}`), &u)
    	fmt.Printf("u.Name=%+v
    ", u.Name) //output: u.Name=polaris
    
    	//var u1 *User
    	//fmt.Printf("u1=%+v, &u1=%p
    ", u1, &u1) //output: u1=<nil>, &u1=0xc00007a028
    	//json.Unmarshal([]byte(`{"name":"polaris"}`), u1)
    	////以上会直接报错:panic: runtime error: invalid memory address or nil pointer dereference
    	//fmt.Printf("u1.Name=%+v
    ", u1.Name)
    
    	var u2 *User
    	fmt.Printf("u2=%+v, &u2=%p
    ", u2, &u2) //output: u2=<nil>, &u2=0xc00007a028
    	json.Unmarshal([]byte(`{"name":"polaris"}`), &u2)
    	fmt.Printf("u2.Name=%+v
    ", u2.Name) //正常打印出u2.Name=polaris
    
    	/**
    	总结:
    		json.Unmarshal()第二个参数必须传入一个有内存地址的变量
    	*/
    }
    
    
  • 相关阅读:
    如何让在JAVA中定义常量池
    java常量池概念
    Efficient Counter in Java
    看到关于JS线程的两篇文章
    Java Collection
    java学习书籍介绍--csdn上一位前辈介绍
    myeclipse快捷键
    数组
    错误处理和时间函数
    函数01
  • 原文地址:https://www.cnblogs.com/Paul-watermelon/p/11210190.html
Copyright © 2020-2023  润新知