golang反映创建对象是错误的

时间:2015-12-23 15:14:52

标签: reflection go

less main.go输出:

```

package main

import (
    "reflect"
    "net/url"
    "fmt"
)

type User struct {
    Id uint64 `json:"id"`
    No *string `json:"no"`
    Identity string `json:"identity"`
    Head url.URL `json:"head"`
}

func main() {
    t := reflect.TypeOf(User{})
    u := reflect.New(t).Elem().Interface()
    fmt.Printf("u is %T, %v\n", u, u)
}

```

go version输出:

go version go1.5.2 darwin/amd64

go build main.go更正

./main输出:

u is main.User, {0 <nil> { <nil> }}

怎么回事?你为什么只反对第三场? User结构包括四个字段!

在我的真实项目中,我发现创建的对象的字段类型不正确

1 个答案:

答案 0 :(得分:0)

您的结构实际上有4个字段,请注意分隔空字符串字段的额外空格。

尝试使用%#v来显示结构的golang语法表示,这样可以更容易阅读(但在大结构上可能变得非常拥挤)。