我们可以在 Go 中使用函数指针吗?

新手上路,请多包涵

我正在学习 Go 中的指针。并设法写下类似的东西:

 func hello(){

       fmt.Println("Hello World")
}

func main(){

       pfunc := hello     //pfunc is a pointer to the function "hello"
       pfunc()            //calling pfunc prints "Hello World" similar to hello function
}

有没有办法声明函数指针而不像上面那样定义它?我们可以像在 C 中那样写一些东西吗?

例如 void (*pfunc)(void);

原文由 Kevin 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 645
1 个回答

如果您使用签名,它会起作用。没有指针。

 type HelloFunc func(string)

func SayHello(to string) {
    fmt.Printf("Hello, %s!\n", to)
}

func main() {
    var hf HelloFunc

    hf = SayHello

    hf("world")
}

或者,您可以直接使用函数签名,而无需声明新类型。

原文由 themue 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏