面试题答案
一键面试package main
import "fmt"
type Person struct {
Name string
Age int
}
func (p Person) SayHello() {
fmt.Printf("Hello, I'm %s, %d years old.\n", p.Name, p.Age)
}
func main() {
person := Person{Name: "John", Age: 30}
sayHelloFunc := (*Person).SayHello
sayHelloFunc(&person)
}
解释
- 首先定义了
Person
结构体和其方法SayHello
。 - 在
main
函数中创建了一个Person
实例person
。 - 使用方法表达式
(*Person).SayHello
获取方法值,这里使用指针接收器形式,因为这样能修改结构体内部的值(虽然SayHello
方法并没有修改,但这是一种常用做法)。 - 调用
sayHelloFunc
并传入person
的指针,从而调用SayHello
方法。