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:
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>
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
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!