在Go语言中,非接口的任意类型T都能够调用其指针类型T的方法,反之亦然。这是因为Go语言在方法调用时会自动处理指针和值的转换,无论是通过T的值还是T的指针,都可以方便地调用对方的方法。这种特性简化了代码的编写,减少了手动取址和解引用的需求。
package main
import "fmt"
type Human struct {
}
func (h *Human) sayHello() {
fmt.Println("sayHello")
}
func (h Human) sayHello2() {
fmt.Println("sayHello2")
}
func main() {
var h Human = Human{}
h.sayHello()
h.sayHello2()
h2 := new(Human)
h2.sayHello()
h2.sayHello2()
}