如何使用Golang从一个函数返回不同类型的结构?

时间:2016-11-21 12:18:41

标签: go

我有一个查询数据库的函数,然后,根据结果形式,它可以创建结构OrderWithoutDetailsOrderWithDetails,具体取决于订单详细信息的存在。

如何使函数能够返回两种类型的结果?

1 个答案:

答案 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{
 ...
}