动态调用模型

问题描述 投票:0回答:1

考虑诸如牛仔裤,衬衫,短裤之类的产品,我想将订单存储在相应的产品表中,例如,与牛仔裤相关的订单应存储在牛仔裤表中,依此类推。每个表将具有相同的参数。因此,在将订单存储在表中时,我应该能够调用相应的结构并存储订单。我来自Laravel(PHP)背景,可以在其中加载动态模型,例如

$model = "Dynamic passed model names"

$class = "App\\Models\\$model";

但是在Go中,如果调用动态结构,我们该怎么做>

例如,

在ABC.go模型中]

type ABC struct{
  Name string
  Invetory int
}

在XYZ.go模型中]

type XYZ struct {
  Name string
  Invetory int
}

因此输入可能是ABC或XYZ,我必须相应地加载该结构。

加载结构ABC

inpt := "ABC"

product := models.<inpt>{
  Name: "prodct name"
  Inventory: 10
}

以上代码段中的模型名称是动态的。我们如何在Go中做到这一点?

考虑诸如牛仔裤,衬衫,短裤之类的产品,我想将订单存储在相应的产品表中,例如,与牛仔裤相关的订单应存储在牛仔裤表中,依此类推。每个表都有...

请勿尝试将其他语言的方法和编程模式移植到Go中-充其量会使您的生活更艰难,而在最坏的情况下会流下眼泪。

您可以执行以下操作:

type Inventory interface{
 // Your interface defining methods here
}

var toUse Inventory

switch input {
case "ABC":
   toUse = ABC{}
case "XY":
   toUse = XY{}
}

问题是为什么您有两个types >>] >>(除了错别字)完全相同。

go dynamic struct model gorm
1个回答
3
投票

请勿尝试将其他语言的方法和编程模式移植到Go中-充其量会使您的生活更艰难,而在最坏的情况下会流下眼泪。

© www.soinside.com 2019 - 2024. All rights reserved.