我必须在切片中保留多类型结构并为它们播种。我接受了接口类型的可变参数并 foreach 它们。如果我调用接口的方法,它就可以工作,但是当我试图访问结构时,我不能。我该如何解决?
注意:Seed() 方法返回数据的文件名。
界面:
type Seeder interface {
Seed() string
}
方法:
func (AirportCodes) Seed() string {
return "airport_codes.json"
}
播种机切片:
seederModelList = []globals.Seeder{
m.AirportCodes{},
m.Term{},
}
最后一个,SeedSchema 函数:
func (db *Database) SeedSchema(models ...globals.Seeder) error {
var (
subjects []globals.Seeder
fileByte []byte
err error
// tempMember map[string]interface{}
)
if len(models) == 0 {
subjects = seederModelList
} else {
subjects = models
}
for _, model := range subjects {
fileName := model.Seed()
fmt.Printf("%+v\n", model)
if fileByte, err = os.ReadFile("db/seeds/" + fileName); err != nil {
fmt.Println("asd", err)
// return err
}
if err = json.Unmarshal(fileByte, &model); err != nil {
fmt.Println("dsa", err)
// return err
}
modelType := reflect.TypeOf(model).Elem()
modelPtr2 := reflect.New(modelType)
fmt.Printf("%s\n", modelPtr2)
}
return nil
}
我可以达到精确的模型,但无法创建成员和种子。
开满天机
相关分类