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?

questionAnswers(2)

yourAnswerToTheQuestion