Wie kann ich mithilfe einer Schnittstelle sowohl Zeichenfolgen als auch Ganzzahlen in einer Go-Struktur speichern?

Susan Sarandon
Freigeben: 2024-11-17 07:54:03
Original
286 Leute haben es durchsucht

How Can I Store Both Strings and Integers in a Go Struct Using an Interface?

Kombinieren von String- und Ganzzahlwerten in einer Go-Struktur: Verwenden einer Schnittstelle

In Go kann es vorkommen, dass Sie eine Datenstruktur benötigen um sowohl Zeichenfolgen- als auch Ganzzahlwerte zu speichern. Betrachten Sie die folgende Strukturdefinition:

type testCase struct {
   input   string
   isValid bool
}
Nach dem Login kopieren

Je nach Anwendungsfall kann es für Sie jedoch praktisch sein, Eingaben entweder als Zeichenfolgen oder als Ganzzahlen zu verarbeiten. Um dies zu erreichen, können Sie eine Schnittstelle verwenden, wie unten gezeigt:

type Input interface {
   String() string
}
Nach dem Login kopieren

Schnittstellenimplementierung für String- und Integer-Typen

Sie können die Eingabeschnittstelle für beide implementieren Zeichenfolgen und Ganzzahlen:

type StringInput string
func (s StringInput) String() string { return string(s) }

type IntegerInput int
func (i IntegerInput) String() string { return strconv.Itoa(int(i)) }
Nach dem Login kopieren

Verwenden der Eingabeschnittstelle in Ihrem Struktur

Jetzt können Sie Ihre testCase-Struktur ändern, um die Eingabeschnittstelle zu verwenden:

type testCase struct {
   input   Input
   isValid bool
}
Nach dem Login kopieren

Beispielcode

Hier ist ein Beispiel wie Sie diese Schnittstelle zum Speichern und Abrufen von Zeichenfolgen- und Ganzzahlwerten verwenden können:

package main

import (
    "fmt"
    "strconv"
)

type Input interface {
    String() string
}

type StringInput string
func (s StringInput) String() string { return string(s) }

type IntegerInput int
func (i IntegerInput) String() string { return strconv.Itoa(int(i)) }

type testCase struct {
    input   Input
    isValid bool
}

func main() {
    // Create a test case with a string input
    testString := testCase{
        input:   StringInput("Hello, world!"),
        isValid: true,
    }

    // Print the input as a string
    fmt.Println(testString.input.String()) // Output: Hello, world!

    // Create a test case with an integer input
    testInt := testCase{
        input:   IntegerInput(123),
        isValid: true,
    }

    // Print the input as a string
    fmt.Println(testInt.input.String()) // Output: 123
}
Nach dem Login kopieren

Durch Nutzung Mit der Eingabeschnittstelle können Sie sowohl Zeichenfolgen- als auch Ganzzahlwerte nahtlos in Ihrer Go-Struktur verarbeiten, was für mehr Flexibilität und Wiederverwendbarkeit des Codes sorgt.

Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe einer Schnittstelle sowohl Zeichenfolgen als auch Ganzzahlen in einer Go-Struktur speichern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage