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 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题
  • ¥15 企业资源规划ERP沙盘模拟
  • ¥15 树莓派控制机械臂传输命令报错,显示摄像头不存在
  • ¥15 前端echarts坐标轴问题
  • ¥15 ad5933的I2C
  • ¥15 请问RTX4060的笔记本电脑可以训练yolov5模型吗?
  • ¥15 数学建模求思路及代码
  • ¥50 silvaco GaN HEMT有栅极场板的击穿电压仿真问题