我想编写一个将不同结构类型作为1参数的函数。另外,我必须确保在这些结构中有一个Id
字段。所以我想拥有这样的功能:MyFunction(object *struct{ Id int }
我已经尝试过将结构传递给*struct{ Id int }
和interface{}
参数。
例如,我有以下两种struct-types:
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).
但是我得到这个错误:
cannot use obj (type *mytables.TableTwo) as type *struct { Id int } in argument to myPackage.Save
答案 0 :(得分:1)
我想编写一个将不同结构类型作为1参数的函数。另外,我必须确保在这些结构中有一个ID字段。
从Go的当前版本开始,您不能执行此操作。 Go支持将多个参数类型传递给单个参数的唯一方法是通过使用接口,并且接口只能指定方法集,而不能指定字段。
(Go 2计划添加泛型,然后有可能这样做。但是,没有具体的时间表来确定何时可用。)