Я изучал указатели в 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);
Это работает, если вы используете подпись. Нет указателя.
type HelloFunc func(string)
func SayHello(to string) {
fmt.Printf("Hello, %s!\n", to)
}
func main() {
var hf HelloFunc
hf = SayHello
hf("world")
}
В качестве альтернативы вы можете использовать сигнатуру функции напрямую, без объявления нового типа.