Можем ли мы иметь указатели функций в 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);

48
задан Flimzy 28 November 2018 в 15:39
поделиться

1 ответ

Это работает, если вы используете подпись. Нет указателя.

type HelloFunc func(string)

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

func main() {
    var hf HelloFunc

    hf = SayHello

    hf("world")
}

В качестве альтернативы вы можете использовать сигнатуру функции напрямую, без объявления нового типа.

69
ответ дан 26 November 2019 в 18:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: