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