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 回答
- 0 關(guān)注
- 231 瀏覽
添加回答
舉報(bào)
0/150
提交
取消