栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

存储有关结构的信息/参考

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

存储有关结构的信息/参考

您可以

reflect.Type
用来表示/描述Go类型。并且在运行时,您可以使用
reflect.New()
来获取指向包装在中的该类型的零值的指针
reflect.Value
。并且,如果您需要切片而不是单个值,则可以使用
reflect.SliceOf()
,或者首先获取切片值的类型描述符。

如果存储

refect.Type
表的值,则可以使用它:

type Record struct {   TableName  string   PrimaryKey string   XormStruct reflect.Type}var ListOfTables [...]Record {   {"User", "id", reflect.TypeOf((*User)(nil)).Elem()},   {"Post", "post_id", reflect.TypeOf((*Post)(nil)).Elem()},}// User is xorm structtype User struct {   Id   int64   Name string}// Post is xorm structtype Post struct {   Post_id int64   Name    string   Other   string}

请注意,您必须使用导出的字段!

然后处理表:

for _, rec := range ListOfTables {    entries := reflect.New(reflect.SliceOf(t.XormStruct)).Interface()    err := xorm.Find(entries)    // Handle error    err := xml.Marshal(entries)    // Handle error}

您可以

xorm
使用JSON:Go
Playground
看到一个可行的示例(概念证明)(没有Go
Playground上没有的)。

如果首先要存储

reflect.Type
切片的值:

var ListOfTables [...]Record {   {"User", "id", reflect.TypeOf([]User{})},   {"Post", "post_id", reflect.TypeOf([]Post{})},}

并且使用它也更简单:

for _, rec := range ListOfTables {    entries := reflect.New(t.XormStruct).Interface()    err := xorm.Find(entries)    // Handle error    err := xml.Marshal(entries)    // Handle error}

请参阅此概念证明:前往Playground。

请注意,如果

Record
保存切片类型(在字段中
XormStruct
),则如果您需要访问结构的类型(结构的元素类型),则可以使用
Type.Elem()
它。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/469006.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号