Chương trình này không biên dịch:loại Impossible chuyển đổi trường hợp
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
}
}
Lỗi này là:
prog.go:19: impossible type switch case: test() (type error) cannot have dynamic type Validator (missing Error method)
Nhưng Validator
struct có phương pháp Error
.
Bạn có lời khuyên nào về khi để xác định một phương thức trên một con trỏ đến đối tượng hoặc đối tượng bản thân ? – warvariuc
Xác định phương thức trên con trỏ khi 1. bạn cần sửa đổi đối tượng. 2. đó là một đối tượng lớn và sao chép nó là tốn kém. – OneOfOne
Trong trường hợp này Validator có kích thước bằng 0, vì vậy tốt hơn nên sử dụng nó hơn một con trỏ. –