英文:
How to make possible to return structs of different types from one function with Golang?
问题
我有一个函数,它查询数据库,然后根据查询结果,可以创建一个名为OrderWithoutDetails
或OrderWithDetails
的结构体,具体取决于订单是否有详细信息。
我该如何使这个函数能够返回两种类型的结果?
英文:
I have a function which queries database, then, depending on result form it, can create a struct OrderWithoutDetails
or OrderWithDetails
depending on the presence of details about the order.
How do I make the function to be able to return result of both types?
答案1
得分: 0
你可以使用interface{}
。
func queryDb() interface{}{
}
但更好的做法是,如果你的两种结构体可以有一个共同的函数,满足一个公共接口,这样会更清晰。例如:
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{
...
}
英文:
You can use interface{}
func queryDb() interface{}{
}
But the better will be if your 2 type of struct can have a common function, that can satisfy a common interface, it will be cleaner.
Example :
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{
...
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论