如何使用 Go 中的函数类型 (function types)?
函数类型(function types)是一种很特殊的类型,它表示着所有拥有同样的入参类型和返回值类型的函数集合。
如下这一行代码,定义了一个名叫 Greeting
的函数类型
type Greeting func(name string) string
这种类型有两个特征:
-
只接收一个参数 ,并且该参数的类型为 string
-
返回值也只有一个参数,其类型为 string
一个函数只要满足这些特征,那么它就可以通过如下方式将该函数转换成 Greeting 类型的函数对象(也即 greet)
func english(name string) string {
return "Hello, " + name
}
// 转换成 Greeting 类型的函数对象
greet := Greeting(english)
// 或者
var greet Greeting = english
greet 做为 Greeting 类型的对象,也拥有 Greeting 类型的所有方法,比如下面的 say 方法
func (g Greeting) say(n string) {
fmt.Println(g(n))
}
直接调用试试看,并不会报错
greet.say("World")
将上面的代码整合在一起
package main
import "fmt"
// Greeting function types
type Greeting func(name string) string
func (g Greeting) say(n string) {
fmt.Println(g(n))
}
func english(name string) string {
return "Hello, " + name
}
func main() {
greet := Greeting(english)
greet.say("World")
}
分类:
GO
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
2020-09-16 Rsync 排除文件