The PathError
type found in Golang's os
library:
type PathError struct {
Op string
Path string
Err error
}
func (e *PathError) Error() string { return e.Op + " " + e.Path + ": " + e.Err.Error() }
nearly fulfills Go's error
interface:
type error interface {
Error() string
}
However, when trying to pass it as an error, you get the following compile time error:
cannot use (type os.PathError) as type error in argument...
os.PathError does not implement error (Error method has pointer receiver)
Why would os.PathError
use a pointer receiver for the Error method, and just avoid meeting the requirements of the error interface?
Full example:
package main
import (
"fmt"
"os"
)
func main() {
e := os.PathError{Path: "/"}
printError(e)
}
func printError(e error) {
fmt.Println(e)
}