go 有函数指针吗?如果有函数指针那是怎么用的?

来源:7-2 函数式编程例一

Amanoi

2020-04-19

func (g *intGen) Read(p []byte) (n int, err error) {
	next := g()  //这边是报错的
	if next > 10000 {
		return 0, io.EOF
	}
	s := fmt.Sprintf("%d\n", next)
	return strings.NewReader(s).Read(p)
}
写回答

1回答

ccmouse

2020-04-26

不需要考虑函数指针,go语言中函数本身就是一等公民,变量的类型可以是函数。c语言中变量的类型不能是函数,只能是指针,所以就有了一种叫“函数指针”的东西。go的函数变量内部其实包括了"函数指针",也就是函数入口地址,以及函数闭包中所引用的自由变量。
函数,channel,接口,这些go语言的变量类型底层其实含有指针,所以基本上没有需要使用函数指针,channel的指针,接口的指针的场合

0
1
Amanoi
非常感谢!
2020-06-18
共1条回复

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

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

5995 学习 · 1909 问题

查看课程