V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  LsLsLsLsLs  ›  全部回复第 1 页 / 共 2 页
回复总数  36
1  2  
12 天前
回复了 sky31802 创建的主题 健康 求助大家推荐一款眼药水
玻璃酸钠眼药水 阿里药房 70 块钱那一款
一喝纯牛奶就爆痘
我用的 xbox 手柄有震动啊 最便宜的那一款啊 原来没用过手柄 玩的时候有点不习惯 现在慢慢习惯了 昨晚被虎先锋虐了 4 个消失 下班再战
azure 申请的企业 API ?
36 天前
回复了 MrLonely 创建的主题 Kubernetes 学不会 k8s 怎么办?
根据官方文档 耐心来一遍
哎 这社会
接口加密
124 天前
回复了 choupidan1996 创建的主题 上海 陆家嘴东昌路 2 号线 9 号线 租房求推荐
淞虹路呗
Bandicam
@wujianhua22 牛逼
173 天前
回复了 LsLsLsLsLs 创建的主题 Java Java 变量引用问题
@qinxi 太无聊了 扣一下细节
189 天前
回复了 Grocker 创建的主题 Go 编程语言 这段 go 代码始终理解不到
@Grocker
189 天前
回复了 Grocker 创建的主题 Go 编程语言 这段 go 代码始终理解不到
定义 Greeting 类型:

go
Copy code
type Greeting func(name string) string
这里定义了一个新的类型 Greeting ,它是一个函数签名。这意味着任何具有相同签名(即接受一个 string 类型的参数并返回一个 string 类型)的函数都可以被看作是一个 Greeting 类型。

为 Greeting 类型添加 say 方法:

go
Copy code
func (g Greeting) say(n string) {
fmt.Println(g(n))
}
这个方法接受一个 Greeting 类型的接收器和一个 string 类型的参数。在这个方法内部,它调用了 Greeting 类型的函数(这里的 g ),传入了 n 作为参数,并打印了该函数的返回值。因为 Greeting 是一个函数类型,所以这里 g(n) 实际上是在调用这个函数。

定义 english 函数:

go
Copy code
func english(name string) string {
return "Hello, " + name
}
这是一个简单的函数,接受一个 string 类型的参数,并返回一个新的 string ,其中包含了问候语。这个函数符合 Greeting 类型的定义。

在 main 函数中使用:

go
Copy code
func main() {
greet := Greeting(english)
greet.say("World")
}
这里首先将 english 函数转换成 Greeting 类型,并赋值给 greet 变量。这是可能的,因为 english 符合 Greeting 类型的定义。
然后,调用了 greet 的 say 方法,并传入了 "World" 作为参数。这将会打印 "Hello, World",因为 english 函数被调用,并以 "World" 作为参数。
这个程序的核心思想是通过函数类型和方法,实现了对函数的封装和扩展。在这个例子中,Greeting 函数类型通过添加 say 方法,能够以一种更结构化的方式使用函数。这种模式在 Go 中是一种强大的设计方式,允许开发者以灵活且富有表达力的方式编写代码。
1  2  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4229 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 42ms · UTC 01:02 · PVG 09:02 · LAX 18:02 · JFK 21:02
Developed with CodeLauncher
♥ Do have faith in what you're doing.