dongwuwan5646 2015-12-23 15:14
浏览 28
已采纳

golang反映创建对象是错误的

less main.go output:

```

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
", u, u)
}

```

go version output:

go version go1.5.2 darwin/amd64

go build main.go correct

./main output:

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

what the matter?? why u object only third field? the User struct include four field!

In my really project, I find the created object's field's type is incorrect

  • 写回答

1条回答 默认 最新

  • doutongya8378 2015-12-23 15:19
    关注

    Your structure actually have 4 fields, notice the extra whitespaces that delimit the empty string field.

    Try using the %#v to show the golang-syntax representation of your struct, that's much more easier to read (but can become quite crowded on big structures).

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看