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

Patricia Arquette
Freigeben: 2024-11-02 00:18:02
Original
597 Leute haben es durchsucht

How to Perform Type Assertion with Function Parameters in Go?

Typzusicherung durch Funktionsparameter

Bei dem Versuch, eine Typzusicherung durchzuführen, versuchen Sie, einen bestimmten Typ an eine Funktion zu übergeben. Konkret streben Sie eine Funktionsdeklaration an, die es Ihnen ermöglicht, einen eindeutigen Abgleich mit einem bereitgestellten Typ durchzuführen, wie in der hypothetischen Funktion unten dargestellt:

// Note: Type isn't a valid type to use in Go
func myfunction(mystring string, mytype Type) {
    ...

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

    ...  // Do other stuff
}
Nach dem Login kopieren

Um die Typzusicherung erfolgreich in myfunction zu implementieren, sollten Sie die Funktion ändern Deklaration zum Akzeptieren eines interface{}-Parameters für mytype. So können Sie dies erreichen:

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

Dieser Ansatz nutzt das Reflect-Paket, um den Typ des v-Parameters mit der bereitgestellten mytype-Schnittstelle zu vergleichen. Es gibt einen booleschen Wert zurück, der angibt, ob die Typen übereinstimmen oder nicht.

Hier ist ein Beispiel, das zeigt, wie Sie diese Funktion verwenden können:

package main

import (
    "fmt"
    "reflect"
)

func main() {

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

    fmt.Printf("%+v\n", assertNoMatch)

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

    fmt.Printf("%+v\n", assertMatch)

}
Nach dem Login kopieren

In diesem Beispiel bestimmt die myfunction korrekt, ob die Der bereitgestellte Wert stimmt mit dem angegebenen Typ überein und gibt entsprechend einen booleschen Wert zurück.

Das obige ist der detaillierte Inhalt vonWie führe ich eine Typzusicherung mit Funktionsparametern 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
Neueste Artikel des Autors
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!