我想编写一个将不同结构类型作为 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 计划添加泛型,届时这可能是可能的。但是,尚无具体的时间表说明何时可用。)
- 1 回答
- 0 关注
- 98 浏览
添加回答
举报
0/150
提交
取消