为了账号安全,请及时绑定邮箱和手机立即绑定

在此示例中,为什么我们返回一个指针而不是一个值?

在此示例中,为什么我们返回一个指针而不是一个值?

Go
胡子哥哥 2021-04-19 15:12:30
package mainimport "fmt"type argError struct {    arg  int    prob string}func (e *argError) Error() string {    return fmt.Sprintf("%d - %s", e.arg, e.prob)}func f2(arg int) (int, error) {    return -1, &argError{arg, "can't work with it"}}func main() {    _, e := f2(42)    if ae, ok := e.(*argError); ok {        fmt.Println(ae.arg)        fmt.Println(ae.prob)    }}在f2中,我们将指针&argError ...作为返回值,但声明为return error的方法。为什么未将f2签名定义为func f2(arg int)(int,* error)代替吗?还是在这种情况下为什么不返回指针呢?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 199 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信