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

package main


import "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)代替吗?还是在这种情况下为什么不返回指针呢?


胡子哥哥
浏览 216回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go