Heim  >  Artikel  >  Backend-Entwicklung  >  Wie übergebe ich Typvariablen an Funktionen für Typzusicherungen in Go?

Wie übergebe ich Typvariablen an Funktionen für Typzusicherungen in Go?

DDD
DDDOriginal
2024-10-30 22:24:30192Durchsuche

How to Pass Type Variables to Functions for Type Assertions in Go?

Übergabe von Typvariablen an Funktionen für Typzusicherungen

Sie möchten Typzusicherungen durchführen, indem Sie einen Typ an eine Funktion übergeben. Im Wesentlichen möchten Sie Folgendes erreichen:

<code class="go">// Note that this is pseudocode, because Type isn't valid here
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)
}</code>

Um Typzusicherungen in myfunction erfolgreich durchzuführen, verwenden Sie die folgende Funktionsdeklaration:

<code class="go">package main

import "reflect"

func myfunction(v interface{}, mytype interface{}) bool {
    return reflect.TypeOf(v) == reflect.TypeOf(mytype)
}

func main() {
    assertNoMatch := myfunction("hello world", map[string]string{})
    fmt.Printf("%+v\n", assertNoMatch) // false

    assertMatch := myfunction("hello world", "stringSample")
    fmt.Printf("%+v\n", assertMatch) // true
}</code>

Dieser Ansatz beinhaltet die Verwendung eines Beispiels des Typs Sie möchten übereinstimmen und sicherstellen, dass die Typen für eine erfolgreiche Typzusicherung identisch sind.

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

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