Heim  >  Artikel  >  Backend-Entwicklung  >  Können Sie in Go verschiedene Datentypen in einem einzigen Strukturfeld speichern?

Können Sie in Go verschiedene Datentypen in einem einzigen Strukturfeld speichern?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-15 16:27:03772Durchsuche

Can You Store Different Data Types in a Single Struct Field in Go?

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!

Stellungnahme:
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