请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

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的指针,接口的指针的场合

0 回复 有任何疑惑可以回复我~
  • 提问者 Amanoi #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-06-18 19:06:57
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信