如果我有一个看起来像这样的函数 func ThisIsMyComplexFunc() (ComplexStruct, error)其中 ComplexStruct 是一个大结构,通常包含大量值。如果函数一开始就偶然发现错误,甚至在我开始构建结构之前,理想情况下我只想返回错误,例如 return nil, err但它不会让我这样做,它迫使我创建一个虚拟的复杂结构并将其与错误一起返回,即使我从不想使用该结构。有没有解决的办法?
2 回答
LEATH
TA贡献1936条经验 获得超6个赞
如果您的函数声明为返回两个值,那么您将需要返回两个值。
可以简化代码的一种选择是使用命名返回值:
func ThisIsMyComplexFunc() (s ComplexStruct, err error) { ...}
现在您可以只分配给s
和/或err
然后使用一个裸return
语句。您仍然会返回一个ComplexStruct
值,但您不需要手动初始化它(它会默认为零值)。
森林海
TA贡献2011条经验 获得超2个赞
您可以返回指向结构的指针:
func ThisIsMyComplexFunc() (*ComplexStruct, error) {
...
if somethingIsWrong {
return nil, err
}
...
return &theStructIBuilt, nil
}
一般来说,无论如何通过指针传递大结构会更便宜,因为复制指针比复制整个结构更容易。
- 2 回答
- 0 关注
- 206 浏览
添加回答
举报
0/150
提交
取消