package main
import "fmt"
// Getter 函数接口
type Getter interface {
getName() string
}
// GetterFunc 函数签名
type GetterFunc func() string
// GetterFunc 实现 Getter 接口
func (f GetterFunc) getName() string {
return f()
}
type Student struct {
name string
}
func (s *Student) getName() string {
return s.name
}
func main() {
student := &Student{name: "John Doe"}
// 1、第一种方法,用 &Student 去初始化接口
//var getter Getter
//getter = student
//fmt.Println(getter.getName())
// 2、第二种方法,用 &Student 去初始化接口
//getter := Getter(student)
//fmt.Println(getter.getName())
// 3、第三种方法,函数签名
用一个具体的函数去初始化函数签名
//getter := GetterFunc(student.getName)
直接调用函数签名即可,函数签名会自动绑定到对应的函数
//fmt.Println(getter())
// 4、第四种方法,用函数签名去初始化接口
f := Getter(GetterFunc(student.getName))
fmt.Println(f.getName())
//注意:本质是Getter可以用多种方式声明,即函数接口可以用多种方式声明
}
GO语言中通过函数接口、函数签名调用函数
于 2025-02-10 15:58:32 首次发布