我有一个函数,它返回Card
一个struct
类型,或者一个错误。
问题是,发生错误时如何从函数返回?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
}
我发现的唯一解决方法是使用 a*Card
而不是 a Card
, a 在出现错误时使用它,或者在没有错误发生时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
是一个命名的返回值,我可以在不初始化的情况下使用它。它以自己的方式归零,我真的不在乎,因为调用函数不应该使用这个值。