MST

星途 面试题库

面试题:Go语言中方法表达式如何调用结构体方法

假设有一个结构体 `Person` 如下: ```go 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) } ``` 请使用方法表达式调用 `SayHello` 方法,并在 `main` 函数中实现。
12.8万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
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)
}

解释

  1. 首先定义了 Person 结构体和其方法 SayHello
  2. main 函数中创建了一个 Person 实例 person
  3. 使用方法表达式 (*Person).SayHello 获取方法值,这里使用指针接收器形式,因为这样能修改结构体内部的值(虽然 SayHello 方法并没有修改,但这是一种常用做法)。
  4. 调用 sayHelloFunc 并传入 person 的指针,从而调用 SayHello 方法。