Wie führe ich eine Typzusicherung mit Funktionstypvariablen in Go durch?

DDD
Freigeben: 2024-11-02 18:04:28
Original
867 Leute haben es durchsucht

How to Perform Type Assertion with Function Type Variables in Go?

Typzusicherung mit Funktionstypvariablen

Diese Frage versucht zu verstehen, wie eine Typzusicherung durchgeführt wird, indem eine Typvariable an eine Funktion übergeben wird. Das Ziel besteht darin, etwa Folgendes zu erreichen:

// Pseudocode
func myfunction(mystring string, mytype Type) {
    ...

    someInterface := translate(mystring)
    object, ok := someInterface.(mytype)

    ...  // Do other stuff
}

func main() {
    // Desired function call
    myfunction("hello world", map[string]string)
}
Nach dem Login kopieren

Richtige Funktionsdeklaration für die Typzusicherung

Um die Typzusicherung in der angegebenen Funktion durchzuführen, muss die Eine ordnungsgemäße Funktionsdeklaration sollte interface{} für den Typparameter verwenden. Dies liegt daran, dass Schnittstellen in Go jeden Typwert enthalten können. Hier ist eine korrigierte Version der Funktionsdeklaration:

func myfunction(v interface{}, expectedType interface{}) bool {
    return reflect.TypeOf(v) == reflect.TypeOf(expectedType)
}
Nach dem Login kopieren

Verwendung in der Hauptfunktion

In der Hauptfunktion kann die myfunction durch Übergabe eines Beispiels aufgerufen werden Wert des gewünschten Typs anstelle des Typs selbst:

assertNoMatch := myfunction("hello world", map[string]string{})

assertMatch := myfunction("hello world", "stringSample")

fmt.Printf("%+v\n", assertNoMatch)  // false
fmt.Printf("%+v\n", assertMatch)  // true
Nach dem Login kopieren

Ansatz erklärt

Der Ansatz verwendet das Reflect-Paket, um den Typ des tatsächlichen Werts zu vergleichen (v ) mit einem Beispielwert des erwarteten Typs (expectedType). Dadurch können wir dynamische Typprüfungen durchführen, als würden wir eine switch-Anweisung verwenden, um den Typ von mystring zu überprüfen und ihn explizit in den gewünschten Typ umzuwandeln.

Das obige ist der detaillierte Inhalt vonWie führe ich eine Typzusicherung mit Funktionstypvariablen in Go durch?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!