Я хочу написать функцию, которая принимает разные struct-типы как 1 параметр. Кроме того, я должен убедиться, что в этих структурах есть Id
поле. поэтому я хочу иметь такую функцию: MyFunction(object *struct{ Id int }
Я пытался передать структуру *struct{ Id int }
и параметру interface{}
.
Например, у меня есть 2 типа структуры:
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