老师好。这里一直不理解。

来源:7-1 函数式编程

慕移动0311372

2020-06-04

fmt.Printf(“0+1+…+%d = %d”,i, a(i))
我的问题是,这里为什么要用a(i)而不能用adder(i)

写回答

1回答

ccmouse

2020-06-10

adder的类型是:

func adder() func(int) int

go语言中函数也可以作为一种类型,和整数啊,字符串啊,地位是一样的。

这个adder是个函数,它的返回类型是func(int) int。也就是说它返回一个函数,返回的函数的类型是func(int) int。

因此我的例子里,a:=adder(),用a去接收函数adder的返回值。因此a也是一个函数,类型是func(int) int。正好,我们可以使用a(i)来调用a,i是参数,调用的结果就是这里打印的和。

3
1
慕移动0311372
非常感谢老师的解答
2020-06-11
共1条回复

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程