为了账号安全,请及时绑定邮箱和手机立即绑定

如何将不同类型作为 struct{} 传递给 GoLang 函数?

如何将不同类型作为 struct{} 传递给 GoLang 函数?

Go
眼眸繁星 2023-06-19 16:06:34
我想编写一个将不同结构类型作为 1 个参数的函数。另外,我必须确定,在这些结构中是一个Id字段。所以我想要这样的功能:MyFunction(object *struct{ Id int })我尝试将结构作为*struct{ Id int }参数传递interface{}。例如,我有这两种结构类型:type TableOne struct {    Id   int    name string    date string}type TableTwo struct {    Id      int    address string    athome  bool}要将它们保存在数据库中(使用reflection),我有以下功能:func SaveMyTables(tablename string, obj *struct{ Id int }) {    // ... Some code here    if obj.Id != 0 {        // ... Some code here    }    // ... Some code here}我这样调用函数:obj := &TableTwo{    Id: 5    address: "some address"    athome: false}myPackage.Save("addresses", obj).但我收到此错误:不能在 myPackage.Save 的参数中使用 obj(类型 *mytables.TableTwo)作为类型 *struct { Id int }
查看完整描述

1 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

我想编写一个将不同结构类型作为 1 个参数的函数。另外,我必须确定,在这些结构中是一个Id字段。

从当前版本的 Go 开始,你不能这样做。Go 支持将多个参数类型传递给单个参数的唯一方法是通过使用接口,接口只能指定方法集,不能指定字段。

(Go 2 计划添加泛型,届时这可能是可能的。但是,尚无具体的时间表说明何时可用。)


查看完整回答
反对 回复 2023-06-19
  • 1 回答
  • 0 关注
  • 98 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信