Heim > Backend-Entwicklung > Golang > Wie kann ich eine dynamische Typumwandlung in Go mit unbekannten Typen durchführen?

Wie kann ich eine dynamische Typumwandlung in Go mit unbekannten Typen durchführen?

Mary-Kate Olsen
Freigeben: 2024-12-07 03:53:08
Original
660 Leute haben es durchsucht

How Can I Perform Dynamic Type Casting in Go with Unknown Types?

Dynamische Typumwandlung in Go

In Go erfordert das Zuweisen des Werts einer Schnittstelle zu einer typisierten Variablen Kenntnisse über den Typ der Variablen. Was aber, wenn der Typ vorher unbekannt ist?

Die herkömmliche Umwandlungsmethode beinhaltet eine fest codierte Typumwandlung, wie zum Beispiel:

var intAge = interfaceAge.(int)
Nach dem Login kopieren

Um das Szenario anzugehen, in dem der Typ unbekannt ist, Einige Entwickler schlagen möglicherweise Folgendes vor:

var x = getType()
var someTypeAge = interfaceAge.(x)
Nach dem Login kopieren

Dies ist jedoch in Go nicht möglich. Die Sprache ist statisch typisiert, was bedeutet, dass Variablentypen zur Kompilierzeit bestimmt werden.

Alternativer Ansatz: Typwechsel

Um den Typ einer Schnittstelle{} dynamisch zu bestimmen, geben Sie Folgendes ein: Switching kann eingesetzt werden:

var t interface{}
t = functionOfSomeType()
switch t := t.(type) {
default:
    fmt.Printf("unexpected type %T", t)       // %T prints the type of t
case bool:
    fmt.Printf("boolean %t\n", t)             // t has type bool
case int:
    fmt.Printf("integer %d\n", t)             // t has type int
case *bool:
    fmt.Printf("pointer to boolean %t\n", *t) // t has type *bool
case *int:
    fmt.Printf("pointer to integer %d\n", *t) // t has type *int
}
Nach dem Login kopieren

Dieser Ansatz ermöglicht die dynamische Identifizierung des Typs einer Schnittstelle{} und anschließende typspezifische Handhabung.

Das obige ist der detaillierte Inhalt vonWie kann ich eine dynamische Typumwandlung in Go mit unbekannten Typen durchführen?. 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