我有一个返回 Card
(一个结构体类型)或错误的函数。
问题是,当发生错误时,如何从该函数返回? nil
对于结构体无效,而我的 Card
类型也没有有效的零值。
func canFail() (card Card, err error) {
// return nil, errors.New("Not yet implemented"); // Fails
return Card{Ace, Spades}, errors.New("not yet implemented"); // Works, but very ugly
}
我找到的唯一解决方法是使用*Card
而不是Card
,当出现错误时使其为nil
或在没有错误发生时使其指向实际的Card
,但这相当笨拙。
func canFail() (card *Card, err error) {
return nil, errors.New("not yet implemented");
}
有更好的方法吗?
编辑:我找到了另一种方法,但不知道它是否符合惯用语或良好的风格。
func canFail() (card Card, err error) {
return card, errors.New("not yet implemented")
}
由于card
是一个具有名称的返回值,因此我可以在不初始化它的情况下使用它。它按照自己的方式被清零,我并不关心这一点,因为调用函数不应该使用这个值。