英文:
What's the idiomatic way in go to return optional interface values?
问题
假设我有一些类型和一个接口:
type Foo struct {}
type Bar struct {}
type Stuff interface {
IsStuff()
}
func (_ Foo) IsStuff() {}
func (_ Bar) IsStuff() {}
现在假设我有一个函数,可能返回Stuff
或者什么都不返回。
func FindStuff() ??? {
// ...
}
如果返回类型是一个普通的结构体,我可以返回结构体的指针,并在函数内部返回nil
。
但是在Go语言中,使用指向接口的指针似乎是不被推荐的(而且如果接口为nil,也很棘手)。
那么如何定义FindStuff
函数呢?
英文:
Imagine I have some types and an interface:
type Foo struct {}
type Bar struct {}
type Stuff interface {
IsStuff()
}
func (_ Foo) IsStuff() {}
func (_ Bar) IsStuff() {}
Now imagine I have a function that may return Stuff
or nothing.
func FindStuff() ??? {
// ...
}
If the return type was a normal struct I could just return a pointer to the struct and return nil
inside the function.
But using pointer to interfaces seems to be frowned upon in Go (and it's also tricky to find if the interface is nil).
So how to define FindStuff
?
答案1
得分: 1
只需返回接口,它允许你返回 nil
:
func FindStuff() Stuff {
return nil
}
英文:
Just return the interface, it allows you to return nil
:
func FindStuff() Stuff {
return nil
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论