Sowohl String- als auch Int-Werte in einer Go-Struktur speichern
In Go ist es nicht möglich, sowohl String- als auch Int-Werte direkt in einer zu speichern einzelnes Strukturfeld. Dies ist auf das starke Typsystem der Sprache zurückzuführen, das erfordert, dass Variablen bestimmte, wohldefinierte Typen haben.
Mögliche Lösungen
Um diese Einschränkung zu umgehen, haben Sie Folgendes getan ein paar Optionen:
Schnittstellenimplementierung in Go 1.18 und höher
Mithilfe einer Schnittstelle können Sie einen Typ erstellen, der sowohl String- als auch Int-Werte enthalten kann. Hier ist ein Beispiel:
type Input interface { IsValid() bool Value() interface{} } type TestCaseBool struct { input bool isValid bool } func (tc TestCaseBool) IsValid() bool { return tc.isValid } func (tc TestCaseBool) Value() interface{} { return tc.input }
Sie können jetzt die TestCaseBool-Struktur verwenden, um entweder einen booleschen Wert oder eine leere Schnittstelle zu speichern.
Hinweis: Diese Lösung erfordert Go 1.18 oder höher, um zu arbeiten.
Das obige ist der detaillierte Inhalt vonWie können Sie sowohl String- als auch Int-Werte in einer Go-Struktur speichern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!