comportamento intrigante para Stringers?
Novo para ir, então por favor, tenha paciência comigo.
Eu estive olhando as páginas do "Tour of Go" e me deparei com algo intrigante sobre Stringers. Considere o exercício emhttps://tour.golang.org/methods/18
Minha resposta inicial foi implementar
func (this *IPAddr) String() string {
return fmt.Sprintf("%d.%d.%d.%d", this[0], this[1], this[2], this[3])
}
no entanto, isso não é usado nas impressões principais apenasfmt.Printf("%v: %v\n", name, ip)
. Se eu alterar a impressão parafmt.Printf("%v: %v\n", name, ip.String())
, então é usado se o tipo de receptor é*IPAddr
ouIPAddr
)
Por que isso está acontecendo?