Heim > Backend-Entwicklung > Golang > Wie vergleiche ich Funktionen in Go?

Wie vergleiche ich Funktionen in Go?

Mary-Kate Olsen
Freigeben: 2024-11-03 17:58:03
Original
711 Leute haben es durchsucht

How to Compare Functions in Go?

So vergleichen Sie Funktionen in Go

Einführung

In Go können Funktionen referenziert werden durch Variablen und als Argumente an andere Funktionen übergeben. Es ist jedoch wichtig zu beachten, dass Funktionen in Go nicht direkt vergleichbar sind. Dies bedeutet, dass Sie die Standardvergleichsoperatoren (==, != usw.) nicht verwenden können, um festzustellen, ob zwei Funktionen gleich sind.

Richtige Vergleichsmethode

Die Die einzige Möglichkeit, zwei Funktionen genau zu vergleichen, besteht darin, ihre Adressen zu vergleichen. Dies liegt daran, dass die Adresse einer Funktion diese eindeutig identifiziert. Um die Adresse einer Funktion zu erhalten, können Sie Folgendes verwenden:

  • fmt.Sprintf(): Diese Methode druckt die Funktionsadresse in einen String und speichert sie in einer Variablen.
  • reflect.Value.Pointer(): Diese Methode gibt die Rohadresse eines Funktionswerts zurück.

Beispiel

Betrachten Sie den folgenden Go-Code:

<code class="go">type Action func(foo string)

var Undefined Action = func(foo string) {}
var Defined Action = func(foo string) {}

func compareFunctions() {
    if fmt.Sprintf("%v", Undefined) == fmt.Sprintf("%v", Undefined) {
        fmt.Println("Undefined and Undefined are equal")
    } else {
        fmt.Println("Undefined and Undefined are not equal")
    }

    if fmt.Sprintf("%v", Defined) == fmt.Sprintf("%v", Defined) {
        fmt.Println("Defined and Defined are equal")
    } else {
        fmt.Println("Defined and Defined are not equal")
    }

    if fmt.Sprintf("%v", Undefined) == fmt.Sprintf("%v", Defined) {
        fmt.Println("Undefined and Defined are equal")
    } else {
        fmt.Println("Undefined and Defined are not equal")
    }
}</code>
Nach dem Login kopieren

Wenn Sie diesen Code ausführen, erzeugt er die folgende Ausgabe:

Undefined and Undefined are equal
Defined and Defined are equal
Undefined and Defined are not equal
Nach dem Login kopieren

Diese Ausgabe zeigt, dass Funktionen anhand ihrer Adressen verglichen werden können und dass zwei Funktionen mit unterschiedlichen Adressen nicht gleich sind.

Schlussfolgerung

Während Funktionswerte in Go nicht direkt verglichen werden können, ist es möglich, ihre Adressen zu vergleichen, um festzustellen, ob Sie haben die gleiche Funktion. Mit den oben beschriebenen Methoden können Sie in Go genau feststellen, ob zwei Funktionen gleich sind.

Das obige ist der detaillierte Inhalt vonWie vergleiche ich Funktionen in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage