"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > GO 초기화 후 글로벌 오류 변수가 공황 상태가 아닌 이유는 무엇입니까?

GO 초기화 후 글로벌 오류 변수가 공황 상태가 아닌 이유는 무엇입니까?

2025-03-23에 게시되었습니다
검색:866

Why Doesn't My Global Error Variable Panic After Initialization in Go?

초기화 후 글로벌 오류 변수 공황이없는 이유는 무엇입니까?

전역 오류 변수를 초기화 할 때 동일한 패키지 내에서 기능이 변경되지 않은 것으로 보일 수 있습니다. 이 불일치는 가변 범위의 오해에서 발생합니다.

범죄 및 초기화

첫 번째 예에서는 다음을 사용합니다. f, loaderr : = os.open ( "asdasd") loaderr! = nil { checkerr () } f! = nil { fmt.println (f.name ()) } }

func main() {
    f, loadErr := os.Open("asdasd")
    if loadErr != nil {
        checkErr()
    }
    if f != nil {
        fmt.Println(f.Name())
    }
}

func main() {
    _, err := os.Open("asdasd")
    loadErr = err
    if loadErr != nil {
        checkErr()
    }
}
funcm main () {) _, err : = os.open ( "asdasd") loaderr = err loaderr! = nil { checkerr () } }

=를 사용하여 로컬 err 변수의 값을 Global Loaderr 변수에 명시 적으로 할당하는 것입니다. 이를 통해 함수 checkerr ()가 수정 된 글로벌 변수에 액세스하고 공황을 트리거 할 수 있습니다.

그림자를 피하기 위해

쉐도우 전역 변수를 부주의하게 생성하는 것을 방지하려면 값을 할당하기 전에 글로벌 변수를 명시 적으로 선언하는 것이 중요합니다. 첫 번째 예에서, 당신은 정의를 움직여 주 함수 외부의 글로벌 변수로 로더를 선언 할 수 있습니다 :
var loadErr error

func main() {
    _, loadErr = os.Open("asdasd")
    if loadErr != nil {
        checkErr()
    }
    if f != nil {
        fmt.Println(f.Name())
    }
}
var loaderr error func main () { _, loaderr = os.open ( "asdasd") loaderr! = nil { checkerr () } f! = nil { fmt.println (f.name ()) } }

이렇게하면 Global Loaderr 변수가 프로그램 전체에 걸쳐 액세스 할 수 있고 업데이트됩니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3