golang - 为什么这两个值json.Marshal之后一个为null一个为[ ]?
本文介绍了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屋!
查看全文