我们可以在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);


守着一只汪
浏览 283回答 3
3回答

慕森王

Go对于函数指针的语法与C和C ++不同。Go博客上对此有很好的解释。可以理解,Go的作者认为C的函数指针语法与常规指针非常相似,因此简而言之,他们决定使函数指针明确。即更具可读性。这是我写的一个例子。请注意,如何在fp中定义参数,calculate()下面的另一个示例向您展示如何将函数指针变成类型并在函数中使用它(带注释的calculate函数)。package mainimport "fmt"type ArithOp func(int, int)intfunc main() {    calculate(Plus)    calculate(Minus)    calculate(Multiply)}func calculate(fp func(int, int)int) {    ans := fp(3,2)    fmt.Printf("\n%v\n", ans) }// This is the same function but uses the type/fp defined above// // func calculate (fp ArithOp) {//     ans := fp(3,2)//     fmt.Printf("\n%v\n", ans) // }func Plus(a, b int) int {    return a + b}func Minus(a, b int) int {    return a - b}func Multiply(a,b int) int {    return a * b}该fp参数定义为一个接受两个int并返回一个int的函数。这与Mue提到的有些相同,但是显示了不同的用法示例。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go