我有一个查询数据库的函数,然后,根据结果形式,它可以创建结构OrderWithoutDetails
或OrderWithDetails
,具体取决于订单详细信息的存在。
如何使函数能够返回两种类型的结果?
答案 0 :(得分:1)
您可以使用interface{}
func queryDb() interface{}{
}
但更好的是,如果你的2种结构可以有一个共同的功能,可以满足一个通用的界面,它会更清洁。 示例:
type s1 struct{
id int
name string
}
type s2 struct{
id int
age int
}
type reDB interface {
my_print()
}
func (r *s1) my_print(){
fmt.Print(s1.id)
}
func (r *s2) my_print(){
fmt.Print(s1.id)
}
func queryDb() reDB{
...
}