Heim > Artikel > Backend-Entwicklung > Können Sie in Go verschiedene Datentypen in einem einzigen Strukturfeld speichern?
Strukturfelder für mehrere Datentypen in Go deklarieren und verwenden
In Go können Sie eine Struktur definieren, um verwandte Daten darzustellen. Was aber, wenn Sie möchten, dass ein Strukturfeld sowohl String- als auch Int-Werte speichern kann?
Um dieses Problem besser zu verstehen, betrachten Sie die folgende Struktur:
type testCase struct { input string isValid bool }
Diese Struktur ist entworfen um einen Testfall zu speichern, bei dem die Eingabe eine Zeichenfolge und isValid ein boolescher Wert ist. In einigen Szenarien möchten Sie möglicherweise zulassen, dass die Eingabe entweder ein String oder ein Int ist.
Zunächst könnten Sie erwägen, die Int-Eingabe während der Verarbeitung in einen String und zurück in Int umzuwandeln. Dieser Ansatz ist jedoch ineffizient und fehleranfällig.
Eine andere Option könnte darin bestehen, zwei separate Strukturen zu definieren, z. B. testCaseInt und testCaseStruct. Dies würde das Problem lösen, führt aber zu unnötiger Codeduplizierung.
Ist es möglich, mithilfe einer Schnittstelle verschiedene Datentypen in einem einzigen Strukturfeld zu speichern?
Nein , es ist in Go-Versionen vor 1.18 nicht möglich. Das Typsystem von Go unterstützt keine Summentypen, bei denen es sich um Typen handelt, die mehrere Varianten von Daten darstellen können.
In Go 1.18 werden Summentypen durch die Einführung von Generika unterstützt. Bis dahin gibt es jedoch keine integrierte Möglichkeit, diese Funktionalität zu erreichen.
Das obige ist der detaillierte Inhalt vonKönnen Sie in Go verschiedene Datentypen in einem einzigen Strukturfeld speichern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!