Heim >Backend-Entwicklung >Golang >Wie können Sie sowohl String- als auch Int-Werte in einer Go-Struktur speichern?

Wie können Sie sowohl String- als auch Int-Werte in einer Go-Struktur speichern?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-03 10:58:09939Durchsuche

How Can You Store Both String and Int Values in a Go Struct?

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:

  1. Eingabe dynamisch konvertieren:Sie können die int-Eingabe in eine Zeichenfolge konvertieren, wenn benötigt und bei der Verarbeitung wieder in int konvertieren.
  2. Mehrere Strukturen definieren: Sie können separate Strukturen für verschiedene Eingabetypen definieren, z. B. testCaseString und testCaseInt.
  3. Schnittstellenimplementierung: Ab Go 1.18 können Sie Schnittstellen als Workaround verwenden. Obwohl Go keine nativen Summentypen hat, können Sie damit Schnittstellen definieren, die von mehreren Typen implementiert werden können.

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!

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