我一直在浏览巡回演出,但我无法弄清楚为什么会发生这种情况。
当您有Stringer( String() string) 时,fmt将使用该方法打印到控制台。就像在https://tour.golang.org/methods/6 中建议的那样
但是,如果您添加Error() string,则会调用此方法而不是String() string。
package main
import "fmt"
type Person struct {
Name string
Age int
}
func (p *Person) String() string {
return fmt.Sprintf("%v (%v years)", p.Name, p.Age)
}
func (p *Person) Error() string {
return fmt.Sprintf("Failed")
}
func main() {
a := &Person{"Arthur Dent", 42}
z := &Person{"Zaphod Beeblebrox", 9001}
fmt.Println(a, z)
}
结果:
失败 失败
我不明白为什么fmt.Println使用Error而不是String.
30秒到达战场
侃侃无极
相关分类