Como comparo duas funções para igualdade de ponteiros na última semana semanal Go?

No Go, existe alguma maneira de comparar dois ponteiros de função não nulos para testar a igualdade? Meu padrão de igualdade é a igualdade dos indicadores. Caso contrário, existe algum motivo específico para a igualdade de ponteiros não ser permitida?

A partir de agora, se eu tentar fazer isso da maneira direta:

package main

import "fmt"

func SomeFun() {
}

func main() {
    fmt.Println(SomeFun == SomeFun)
}

Eu receb

./func-pointers.go:12: invalid operation: SomeFun == SomeFun (func can only be compared to nil)

Entendo que esse comportamento foi introduzido recentement

Encontrei uma resposta usando o pacote reflect; no entanto, o Atom sugere abaixo que isso realmente produz um comportamento indefinido. Consulte a publicação do Atom para obter mais informações e uma possível solução alternativ

package main

import "fmt"
import "reflect"

func SomeFun() { }

func AnotherFun() { }

func main() {
    sf1 := reflect.ValueOf(SomeFun)
    sf2 := reflect.ValueOf(SomeFun)
    fmt.Println(sf1.Pointer() == sf2.Pointer())

    af1 := reflect.ValueOf(AnotherFun)
    fmt.Println(sf1.Pointer() == af1.Pointer())
}

Outputs:

true
false

questionAnswers(6)

yourAnswerToTheQuestion