登录
首页 >  Golang >  Go问答

使用Go语言创建可变的数据库模型

来源:stackoverflow

时间:2024-03-01 17:39:24 384浏览 收藏

珍惜时间,勤奋学习!今天给大家带来《使用Go语言创建可变的数据库模型》,正文内容主要涉及到等等,如果你正在学习Golang,或者是对Golang有疑问,欢迎大家关注我!后面我会持续更新相关内容的,希望都能帮到正在学习的大家!

问题内容

我有一个特定配置的 yaml 文件,go 程序会读取该文件来构建结构对象。

结构本身看起来像这样

type YamlConfig struct {
    Attributes map[string]struct {
        Label      string   `yaml:"label"`
        Type       string   `yaml:"type"`
        Presence   bool     `yaml:"presence"`
        Uniqueness bool     `yaml:"uniqueness"`
        Strip      bool     `yaml:"strip"`
        Values     []string `yaml:"values"`
        Default    string   `yaml:"default"`
        Multi      bool     `yaml:"multi"`
        Searchable bool     `yaml:"searchable"`
        Pattern    struct {
            Value   string `yaml:"value"`
            Message string `yaml:"message"`
        } `yaml:"pattern"`
        Length struct {
            Min int `yaml:"min"`
            Max int `yaml:"max"`
        } `yaml:"length"`
    } `yaml:"attributes"`
}

我有一个属性映射,可以是从“名称”到“任何”的任何内容,它应该代表数据库表列及其类型。

我的问题是 - 我能否以某种方式获取该对象(该对象非常动态且可能不包含所有属性的数据),并以某种方式将其转换为可用 gorm 或其他东西的 orm 模型?

我应该始终定义模型结构还是可以动态构建结构?


正确答案


我认为您已经在使用 yaml.Unmarshal() 来解析您的 yaml 配置,对吗?

当您将 yaml 解编为结构体时,可以使用空接口而不是完整的 yaml 结构体

var config map[string]interface{}
yaml.Unrmarshal(configFile, &config)
fmt.Println(config["label"])

本篇关于《使用Go语言创建可变的数据库模型》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>