Ten program nie kompiluje:typ Impossible przypadek przełącznik
package main
type Validator struct {
}
// Error implements error interface
func (v *Validator) Error() string {
return ""
}
func test() error {
return &Validator{}
}
func main() {
switch test().(type) {
case nil:
println("No error")
case Validator:
println("Validation error")
return
default:
println("Unknown error")
return
}
}
Błąd jest:
prog.go:19: impossible type switch case: test() (type error) cannot have dynamic type Validator (missing Error method)
Ale Validator
struct ma metodę Error
.
Czy macie jakieś porady na temat, kiedy należy określić metodę na wskaźnik do obiektu lub sam obiekt ? – warvariuc
Zdefiniuj metodę na wskaźniku, gdy: 1. musisz zmodyfikować obiekt. 2. Jest to duży obiekt, a jego kopiowanie jest drogie. – OneOfOne
W tym przypadku Validator ma rozmiar 0, więc zdecydowanie lepiej jest użyć go niż wskaźnika. –