Skip to content

Latest commit

 

History

History
31 lines (24 loc) · 930 Bytes

problem.md

File metadata and controls

31 lines (24 loc) · 930 Bytes

你好:

当我使用reflect.StructOf构建一个动态结构体的时候遇到一个问题,代码如下:

    structFields = append(structFields, reflect.StructField{
        Name:      field.name,
        PkgPath:   field.pkg,
        Type:      reflect.TypeOf(field.typ),
        Tag:       reflect.StructTag(field.tag),
        Anonymous: field.anonymous,
    })

    return &dynamicStructImpl{
    definition: reflect.StructOf(structFields),
    }

如果field.typ是一个指针,并且对应的结构体是通过reflect.StructOf构建的,那么构建的新结构体的该字段通过reflect.TypeOf(field.typ)获取的类型是map而不是 测试代码大致如下:

    subInstance := NewStruct().AddField("Integer", 0, `json:"int"`).
		AddField("Text", "", `json:"someText"`).Build().New()
	instance := NewStruct().
		AddField("StructPtr", &subInstance, `json:"struct"`).
		Build().
		New()