효과적인 오류 처리에 대한 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)의 사용을 보여줍니다. 무슨 뜻인지 자세히 알아보겠습니다.
os.Create가 호출되면 두 번째 반환 값으로 오류를 반환합니다. 이 오류는 오류 인터페이스 { Error() string }을 구현합니다. Error 메서드가 있는 모든 데이터 유형은 이 인터페이스를 구현하고 여기에 할당할 수 있습니다.
일반적으로 단순히 오류 메시지를 출력하는 것으로 충분합니다. 그러나 주어진 예에서 프로그램은 ENOSPC(장치에 남은 공간 없음) 오류를 구체적으로 처리하는 것을 목표로 합니다. os 패키지는 이러한 경우 오류 구현으로 *os.PathError를 제공합니다. 오류에 대한 추가 정보에 액세스해야 하는 경우 해당 오류를 캐스팅할 수 있습니다.
문 e, ok: = err.(os.PathError)는 유형 주장을 사용합니다. 인터페이스 값 err이 os.PathError를 구체적인 유형으로 보유하고 있는지 확인하고, 그렇다면 해당 값을 반환합니다. 인터페이스에 다른 유형이 있는 경우(다른 유형도 오류 인터페이스를 구현할 수 있음) 단순히 0 값과 false(이 경우 nil, false)를 반환합니다.
위 내용은 Go에서 `err.(*os.PathError)`를 언제, 왜 사용하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!