使用反射的运行时结构

Assume I have data model written in some sort of yaml file.

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

I would like to parse it, and generate structure:

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

Is it possible to generate runtime Go struct using reflection?

Yes, you can with 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)

Prints

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

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

But as others have said, sometimes it's better to just generate code. Reflection is kinda wonky at times, and requires a lot of precision when using it.