gpt4 book ai didi

go - 使用反射的运行时结构

转载 作者:IT王子 更新时间:2023-10-29 01:41:35 24 4
gpt4 key购买 nike

假设我在某种 yaml 文件中编写了数据模型。

schema: human
type: object
properties:
name:
type: string
surname:
type: string

我想解析它,并生成结构:

type Human struct {
Name string `db:"name"`
Surname string `db:"surname"`
}

是否可以使用反射生成运行时 Go 结构?

最佳答案

是的,你可以用 reflect.StructOf :

sType := reflect.StructOf([]reflect.StructField{
{Name: "Name", Type: stringType, Tag: reflect.StructTag(`db:"name" json:"name"`)},
{Name: "Surname", Type: stringType, Tag: reflect.StructTag(`db:"surname" json:"surname"`)},
})
sv := reflect.New(sType)
svi := sv.Interface()
b, err := json.Marshal(svi)
fmt.Printf("%s %v", b, err)

打印

{"name":"","surname":""} <nil>

Playground :https://play.golang.org/p/U4N3bbJ5n8 .

但正如其他人所说,有时只生成代码会更好。反射有时有点不稳定,使用它时需要很高的精度。

关于go - 使用反射的运行时结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43411458/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com