首页 > 解决方案 > 将错误变量初始化为错误指针

问题描述

尝试在单个 defer 函数中处理所有错误。但是 err 不能分配为指向错误的指针吗?因为它给了我无效的内存地址错误

package main

import (
    "fmt"
    "errors"
)

func main() {
    var err *error

    defer func(err *error) {
        if *err != nil {
            fmt.Println("hi")
        } else {
            fmt.Println("oh")
        }
    }(err)
    *err = errors.New("EMPTY_BODY")
}

操场

标签: go

解决方案


我从来不需要传递指针

package main

import (
    "fmt"
    "errors"
)

func main() {
    var err error

    defer func() {
        if err != nil {
            fmt.Println("hi")
        } else {
            fmt.Println("oh")
        }
    }()
    err = errors.New("EMPTY_BODY")
}

我认为我需要,因为 defer 在那个时候而不是在函数结束时取 err 的值。


推荐阅读