>  기사  >  백엔드 개발  >  Go에서 `err.(*os.PathError)`를 언제, 왜 사용하나요?

Go에서 `err.(*os.PathError)`를 언제, 왜 사용하나요?

Barbara Streisand
Barbara Streisand원래의
2024-11-04 10:03:02566검색

When and Why Use `err.(*os.PathError)` in Go?

Go의 err.(*os.PathError) 이해

효과적인 오류 처리에 대한 Go의 문서(https://golang.org/doc/active_go.html) #errors), 코드 조각을 발견했을 수 있습니다:

<code class="go">for try := 0; try < 2; try++ {
    file, err = os.Create(filename)
    if err == nil {
        return
    }
    if e, ok := err.(*os.PathError); ok && e.Err == syscall.ENOSPC {
        deleteTempFiles()  // Recover some space.
        continue
    }
    return
}</code>

이 코드는 err.(*os.PathError)의 사용을 보여줍니다. 무슨 뜻인지 자세히 알아보겠습니다.

err.(*os.PathError)가 무엇인가요?

os.Create가 호출되면 두 번째 반환 값으로 오류를 반환합니다. 이 오류는 오류 인터페이스 { Error() string }을 구현합니다. Error 메서드가 있는 모든 데이터 유형은 이 인터페이스를 구현하고 여기에 할당할 수 있습니다.

일반적으로 단순히 오류 메시지를 출력하는 것으로 충분합니다. 그러나 주어진 예에서 프로그램은 ENOSPC(장치에 남은 공간 없음) 오류를 구체적으로 처리하는 것을 목표로 합니다. os 패키지는 이러한 경우 오류 구현으로 *os.PathError를 제공합니다. 오류에 대한 추가 정보에 액세스해야 하는 경우 해당 오류를 캐스팅할 수 있습니다.

어설션 유형: e, ok := err.(*os.PathError)

문 e, ok: = err.(os.PathError)는 유형 주장을 사용합니다. 인터페이스 값 err이 os.PathError를 구체적인 유형으로 보유하고 있는지 확인하고, 그렇다면 해당 값을 반환합니다. 인터페이스에 다른 유형이 있는 경우(다른 유형도 오류 인터페이스를 구현할 수 있음) 단순히 0 값과 false(이 경우 nil, false)를 반환합니다.

위 내용은 Go에서 `err.(*os.PathError)`를 언제, 왜 사용하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.