comportamiento desconcertante para Stringers?

Nuevo para ir, así que tengan paciencia conmigo.

He estado mirando las páginas de "Tour of Go" y me topé con algo desconcertante sobre Stringers. Considere el ejercicio enhttps://tour.golang.org/methods/18

Mi respuesta inicial fue implementar

func (this *IPAddr) String() string {
  return fmt.Sprintf("%d.%d.%d.%d", this[0], this[1], this[2], this[3])
}

sin embargo, esto no se usa solo para impresiones principalesfmt.Printf("%v: %v\n", name, ip). Si cambio la impresión afmt.Printf("%v: %v\n", name, ip.String()), entonces se usa si el tipo de receptor es*IPAddr oIPAddr)

¿Por qué está pasando esto?

Respuestas a la pregunta(2)

Su respuesta a la pregunta