golang - 为什么这两个值json.Marshal之后一个为null一个为[ ]?

查看:173
本文介绍了golang - 为什么这两个值json.Marshal之后一个为null一个为[ ]?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

打印出来的类型和值都是一样的,如下:

但为什么结果不同?

补充一下: list获取的函数如下:

解决方案

    var x []string
    fmt.Println(x, reflect.TypeOf(x), len(x), cap(x), x == nil)
    x1 := []string{}
    fmt.Println(x1, reflect.TypeOf(x1), len(x1), cap(x1), x1 == nil)

    b1, _ := json.Marshal(x)
    fmt.Println("x: ", string(b1))
    b2, _ := json.Marshal(x1)
    fmt.Println("x1: ", string(b2))

输出:

[] []string 0 0 true
[] []string 0 0 false
x:  null
x1:  []

两种不同的初始化方式引起的额,由此可知函数返回值和var方式都是声明,而不是定义。

这篇关于golang - 为什么这两个值json.Marshal之后一个为null一个为[ ]?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆