我一直在浏览巡回演出,但我无法弄清楚为什么会发生这种情况。
当您有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.
 慕尼黑8549860
慕尼黑8549860 
					30秒到达战场
 
					侃侃无极
 随时随地看视频慕课网APP
随时随地看视频慕课网APP
相关分类