在给定字符串数组的情况下动态初始化结构



我正在使用gorm来查询和管理mysql。以下代码片段中名为SyncDB的函数迁移在目录下的user.go文件中找到的最新用户架构schema

package db
import (
"my-server/db/schema"
"github.com/jinzhu/gorm"
)
func SyncDB(db *gorm.DB) {
db.AutoMigrate(&schema.User{})
}

我在schema目录下有多个文件。我尝试读取目录schema下的所有文件名,并将文件名作为数组,如下所示:

filenames := []string{
"user.go",
"password.go",
"profile.go",
}

有没有办法使用数组filenames动态调用:

db.AutoMigrate(&schema.User{})

例如,&schema.User{}在下一次调用中被替换为&schema.Password{}。我怎样才能让这个东西动态化?

无法发送文件。 我建议创建slice of struct并将其传递到AutoMigrate中,如下所述:

values := []interface{}{&schema.User{}, &profile.Profile{}, &password.Password{}}
if err := DB.AutoMigrate(values...).Error; err != nil {
panic(fmt.Sprintf("No error should happen when create table, but got %+v", err))
}

最新更新