Heim > Backend-Entwicklung > Golang > Wie kann ich sich wiederholende Typzusicherungen bei Go-Typwechseln vermeiden?

Wie kann ich sich wiederholende Typzusicherungen bei Go-Typwechseln vermeiden?

Susan Sarandon
Freigeben: 2024-12-13 13:51:12
Original
119 Leute haben es durchsucht

How Can I Avoid Repetitive Type Assertions in Go Type Switches?

Vermeiden von Typzusicherungen in Go-Typschaltern

In Go bieten Typschalter eine praktische Möglichkeit, verschiedene Objekttypen in einem einzigen Konstrukt zu verarbeiten. Allerdings können sich wiederholende Typzusicherungen innerhalb der Fälle mühsam und langwierig werden. Dieser Artikel befasst sich mit diesem Problem, indem er eine alternative Methode untersucht, um die Notwendigkeit expliziter Typzusicherungen zu beseitigen.

Das Problem

Bedenken Sie den folgenden Codeausschnitt:

switch question.(type) {
case interfaces.ComputedQuestion:
    handleComputedQuestion(question.(interfaces.ComputedQuestion), symbols)
case interfaces.InputQuestion:
    handleInputQuestion(question.(interfaces.InputQuestion), symbols)
}
Nach dem Login kopieren

Hier Code wird der Typ der Fragevariablen in jedem Fall entweder für interfaces.ComputedQuestion oder interfaces.InputQuestion geltend gemacht. Diese Typzusicherung ist notwendig, um das Frageobjekt korrekt an die entsprechende Funktion zu übergeben.

Die Lösung

Die Lösung besteht darin, das Ergebnis des Typwechsels einer neuen Variablen zuzuweisen, die das automatisch zuweist behaupteter Typ:

switch question := question.(type) {
case interfaces.ComputedQuestion:
    handleComputedQuestion(question, symbols)
case interfaces.InputQuestion:
    handleInputQuestion(question, symbols)
}
Nach dem Login kopieren

Durch Zuweisen von Frage := Frage.(Typ) zur Fragevariablen innerhalb des Typschalters wird der richtige bestätigte Typ automatisch zugewiesen, sodass keine Notwendigkeit mehr besteht explizite Typzusicherungen. Diese Technik verbessert die Lesbarkeit des Codes erheblich und verringert das Fehlerpotenzial.

Beispiel aus der Praxis

Betrachten Sie das folgende vereinfachte Beispiel:

package main

func main() {
    var num interface{} = 5
    switch num := num.(type) {
    case int:
        println("num is an int", num)
    case string:
        println("num is a string", num)
    }
}
Nach dem Login kopieren

In diesem Beispiel beträgt die Zahl Der Schnittstellenvariablen wird der int-Wert 5 zugewiesen. Der Typschalter weist num als int zu und gibt die Anweisung „num is an int“ mit ihrem Wert aus. Wenn num eine Zeichenfolge zugewiesen würde, würde stattdessen die Anweisung „num ist eine Zeichenfolge“ gedruckt.

Schlussfolgerung

Durch die Verwendung der Technik der Zuweisung des Ergebnisses eines Typwechsels können Entwickler dies vermeiden Wiederholte Verwendung von Typzusicherungen in den Fällen eines Typwechsels in Go. Diese Technik vereinfacht den Code, reduziert Fehler und verbessert die Lesbarkeit.

Das obige ist der detaillierte Inhalt vonWie kann ich sich wiederholende Typzusicherungen bei Go-Typwechseln vermeiden?. 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