go - go中动态调用模型

标签 go dynamic struct model go-gorm

考虑牛仔裤、衬衫、短裤等产品,我想将订单存储在各自的产品表中,例如牛仔裤相关的订单应该存储在牛仔裤表中,依此类推。每个表都有相同的参数。因此,在表中存储订单时,我应该能够调用相应的结构并存储订单。 我来自 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{}
}

问题是为什么你有两个完全相同的类型(除了拼写错误之外)。

关于go - go中动态调用模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58889672/

相关文章:

google-app-engine - App Engine 数据存储区查询,对许多索引

post - 带有 Go 后端的 Flutter/Dart 前端中的发布请求问题

json - Golang SJSON动态JSON

Python:即时重命名方法名称

c - 我无法弄清楚我的指针错误

html - 如何在Golang中通过添加section标签将markdown转换为HTML

c# - 使用动态 LINQ(或泛型)查询/筛选 Azure 表

struct - 可能在 Rust 中有一个结构/元组的特征?

python - 无法解析从套接字接收的python中的Ctype结构

jquery - 如何动态查找下一个li标签