-1
누군가이 코드를 설명해 주시겠습니까?
이 메서드를 호출하면 err != nil
이 true를 반환하므로 포인터 참조가 nil이됩니다. 나는 이것이 내가 인터페이스에 캐스트 nil의-구조체 포인터를 처리하고 있다는 사실과 함께 할 수있는 뭔가가 있음을 이해인터페이스에서 nil 테스트가 실패합니다.
type E struct{}
func (e E) Error() string {
return ""
}
func DoStuff() *E {
return nil
}
func main() {
var err *E
err = DoStuff()
log.Println(err) // nil
testErr(err)
}
func testErr(err error) {
if err != nil {
log.Println("got error", err.Error())
}
}
https://play.golang.org/p/iys7U_UMhG
...
그러나 나는 혼란 스러워요 이 인터페이스를 디자인하는 방법 , "스마트"오류 객체를 반환하려는 경우 일반error
이 아닌.
"오류가 발생했습니다"- 전달 된 오류 값이 실제로 전무하더라도 :
작업을해야 다음 (나는 단지
Error
방법의 수신기*
을 추가? – cfstras