关于对fmt String重载的疑问

package main

import (
     "fmt"
     //"testpkg"
     "strconv"
)

type Human struct {
     name string
     age  int
}

func (h *Human) String() string {  //此处如果修改为 Human则可以重载,如果*Human则不行
     fmt.Println("is run")
     return h.name + "-" + strconv.Itoa(h.age)
}

func main() {
     jek := Human{"jek", 25}
     fmt.Println(jek)   //但是如果此处修改为 &jek就可以

}

在看书的时候写到这个例子,一开始以为是我写错,后来发现我比书上多了一个* func(h *Human),不太理解这里,求解答

查看回复