


Wie kann ich in Go sowohl Zeichenfolgen- als auch Ganzzahlwerte in einem Strukturfeld speichern?
Typkonvertierung und Schnittstellen in Strukturfeldern
Frage:
In einem Go-Programm Mit einer Struktur wird ein benutzerdefinierter Datentyp definiert, der mehrere Felder unterschiedlichen Typs bündelt. Was aber, wenn Sie ein Feld innerhalb einer Struktur wünschen, das sowohl Zeichenfolgen- als auch Ganzzahlwerte speichern kann?
Antwort:
Das Typsystem von Go unterstützt keine Summentypen, die Erlauben Sie einem einzelnen Feld, Werte mehrerer Typen zu speichern. Es gibt jedoch eine Problemumgehung mithilfe von Schnittstellen. Eine Schnittstelle definiert eine Reihe von Methoden, und jeder Typ, der diese Methoden implementiert, kann als diese Schnittstelle verwendet werden.
Um diese Lösung zu implementieren, betrachten Sie den folgenden Codeausschnitt:
type Input interface { ToString() string ToInteger() int } type TestCase struct { Input Input IsValid bool }
In diesem Beispiel haben wir die Eingabeschnittstelle mit zwei Methoden definiert, ToString() und ToInteger(), die zum Konvertieren des Eingabewerts in einen String oder eine Ganzzahl verwendet werden. Die TestCase-Struktur verfügt jetzt über ein Eingabefeld, das jeden Typ akzeptiert, der die Eingabeschnittstelle implementiert.
Um diese Lösung zu verwenden, können Sie benutzerdefinierte Typen definieren, die die Eingabeschnittstelle implementieren:
type StringInput string func (s StringInput) ToString() string { return string(s) } func (s StringInput) ToInteger() int { return 0 // Error handling omitted for brevity } type IntegerInput int func (i IntegerInput) ToString() string { return strconv.Itoa(int(i)) } func (i IntegerInput) ToInteger() int { return int(i) }
Mit Mit diesen benutzerdefinierten Typen können Sie einen Testfall erstellen und dem Eingabefeld Werte zuweisen:
var testCase = TestCase{Input: StringInput("Hello"), IsValid: true} fmt.Println(testCase.Input.ToString()) // Prints "Hello" fmt.Println(testCase.Input.ToInteger()) // Throws error
Während dieser Ansatz es Ihnen ermöglicht, sowohl Zeichenfolgen- als auch Ganzzahlwerte im zu speichern Wenn Sie dasselbe Feld verwenden, müssen benutzerdefinierte Typen und Konvertierungsmethoden implementiert werden, die möglicherweise nicht für alle Fälle geeignet sind.
Das obige ist der detaillierte Inhalt vonWie kann ich in Go sowohl Zeichenfolgen- als auch Ganzzahlwerte in einem Strukturfeld speichern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Artikel erläutert die Iteration durch Karten in Go, konzentriert sich auf sichere Praktiken, Änderungen von Einträgen und Leistungsüberlegungen für große Karten.

Der Artikel erörtert Unterschiede zwischen Arrays und Scheiben in Go und konzentriert sich auf Größe, Speicherzuweisung, Funktionsübergabe und Nutzungsszenarien. Arrays sind fest und stapelalloziert, während die Scheiben dynamisch, häufig zugeteilt und flexibler sind.

In dem Artikel wird das Erstellen und Initialisieren von Scheiben in GO erörtert, einschließlich der Verwendung von Literalen, der Make -Funktion und dem Schneiden vorhandener Arrays oder Scheiben. Es deckt auch die Slice -Syntax und die Bestimmung der Scheibenlänge und -kapazität ab.

In dem Artikel wird erläutert, wie Arrays in GO erstellt und initialisiert werden, die Unterschiede zwischen Arrays und Scheiben erörtert und die maximale Größengrenze für Arrays angesprochen. Arrays vs. Slices: Fixes vs. Dynamic, Wert vs. Referenztypen.

In Artikel werden die Syntax und Initialisierung von Strukturen in GO, einschließlich der Namensberechnung von Feldnamen und Struktureinbettung, erörtert. Hauptproblem: So verwenden Sie Strukturen in Go -Programmierung effektiv. (Zeichen: 159)

Der Artikel erläutert das Erstellen und Verwenden von Zeigern in Go und diskutiert Vorteile wie effiziente Speicherverbrauch und sichere Verwaltungspraktiken. Hauptproblem: Safe Zeiger Verwendung.

In dem Artikel werden die Vorteile der Verwendung von GO (Golang) in der Softwareentwicklung erörtert, wobei der Schwerpunkt auf der Unterstützung von Parallelität, schneller Zusammenstellung, Einfachheit und Skalierbarkeit liegt. Zu den wichtigsten Branchen gehören Technologie, Finanzen und Spiele.

In dem Artikel wird die Syntax und Verwendung von IF -Anweisungen in GO erörtert, einschließlich variabler Initialisierung innerhalb von If -Blöcken und gemeinsamen Fehlern zu vermeiden. Es bietet Best Practices für die Strukturierung, wenn Aussagen effektiv.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor
