伙计们!我是 Go 的初学者。当我学习reflect包时,我有一些疑问,这是代码:
package main
import (
"encoding/json"
"fmt"
"reflect"
)
func checkError(err error) {
if err != nil {
panic(err)
}
}
type Test struct {
X int
Y string
}
func main() {
fmt.Println("hello world!")
test1()
test2()
}
func test1() {
a := Test{}
fmt.Printf("a: %v %T \n", a, a)
fmt.Println(a)
err := json.Unmarshal([]byte(`{"X":1,"Y":"x"}`), &a)
checkError(err)
fmt.Printf("a: %v %T \n", a, a)
}
func test2() {
fmt.Println("===========================")
m := make(map[string]reflect.Type)
m["test"] = reflect.TypeOf(Test{})
a := reflect.New(m["test"]).Elem().Interface()
fmt.Printf("a: %v %T \n", a, a)
fmt.Println(a)
err := json.Unmarshal([]byte(`{"X":1,"Y":"x"}`), &a)
checkError(err)
fmt.Printf("a: %v %T \n", a, a)
}
结果:
a: {0 } main.Test
{0 }
a: {1 x} main.Test
===========================
a: {0 } main.Test
{0 }
a: map[X:1 Y:x] map[string]interface {}
为什么这两种方式会产生不同的结果,谁能告诉我为什么,非常感谢。
子衿沉夜
为什么在创建结构是采用了无实参的方式创建
构造方法和普通方法有什么不同? 1、构造方法可以定义在另一个类中,普通方法不能; 2、构造方法必无返回值 3、构造方法在创建对象时直接赋值,普通方法不行 4、功能不同,构造方法用于创建一个对象,普通方法用来描述这个对象能做什么 我总结的对吗?还有其他相同或者不同吗?
对象的创建可以不用构造方法来创建吗
在 Golang 中使用嵌套 JSON 结构的最佳方法是什么?
相关分类