So vermeiden Sie Typzusicherungen in Typschalterzweigen
In Go werden Typschalter häufig verwendet, um Objekte unterschiedlichen Typs zu verarbeiten. Allerdings kann es mühsam sein, den Typ eines Objekts in jedem einzelnen Fall manuell zu bestätigen. Bei dieser Frage geht es darum, die Notwendigkeit solcher Behauptungen zu beseitigen.
Ursprüngliche Frage:
Ich verwende Typschalter wie die folgenden:
switch question.(type) { case interfaces.ComputedQuestion: handleComputedQuestion(question.(interfaces.ComputedQuestion), symbols) case interfaces.InputQuestion: handleInputQuestion(question.(interfaces.InputQuestion), symbols) }
Gibt es eine Möglichkeit, die explizite Typzusicherung innerhalb von zu verhindern? Fälle?
Antwort:
Ja, Sie können Typzusicherungen vermeiden, indem Sie das Ergebnis des Typwechsels einer Variablen des erwarteten Typs zuweisen. Dadurch erhalten Sie den bestätigten Typ, ohne dass weitere Behauptungen erforderlich sind.
switch question := question.(type) { case interfaces.ComputedQuestion: handleComputedQuestion(question, symbols) case interfaces.InputQuestion: handleInputQuestion(question, symbols) }
In diesem Beispiel weist der Ausdruck Frage := Frage.(Typ) das Ergebnis des Typwechsels der Fragevariablen zu. Der Typwechsel selbst bleibt unverändert.
Dieser Ansatz vereinfacht Ihren Code, indem er die Notwendigkeit manueller Typzusicherungen innerhalb der Fälle eliminiert, wodurch er prägnanter und leichter lesbar wird.
Das obige ist der detaillierte Inhalt vonWie kann ich Typzusicherungen in den Typwechselfällen von Go vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!