Maison > développement back-end > Golang > Comment puis-je stocker à la fois des chaînes et des entiers dans une structure Go à l'aide d'une interface ?

Comment puis-je stocker à la fois des chaînes et des entiers dans une structure Go à l'aide d'une interface ?

Susan Sarandon
Libérer: 2024-11-17 07:54:03
original
326 Les gens l'ont consulté

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

Combinaison de valeurs de chaîne et de valeurs entières dans une structure Go : utilisation d'une interface

Dans Go, vous pouvez rencontrer des scénarios dans lesquels vous avez besoin d'une structure de données pour stocker à la fois des valeurs de chaîne et des valeurs entières. Considérez la définition de structure suivante :

type testCase struct {
   input   string
   isValid bool
}
Copier après la connexion

Cependant, vous trouverez peut-être pratique de gérer les entrées sous forme de chaînes ou d'entiers selon le cas d'utilisation. Pour y parvenir, vous pouvez utiliser une interface, comme indiqué ci-dessous :

type Input interface {
   String() string
}
Copier après la connexion

Implémentation de l'interface pour les types chaîne et entier

Vous pouvez implémenter l'interface d'entrée pour les deux chaînes et entiers :

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

type IntegerInput int
func (i IntegerInput) String() string { return strconv.Itoa(int(i)) }
Copier après la connexion

Utilisation de l'interface d'entrée dans votre structure

Maintenant, vous pouvez modifier votre structure testCase pour utiliser l'interface d'entrée :

type testCase struct {
   input   Input
   isValid bool
}
Copier après la connexion

Exemple de code

Voici un exemple de la façon dont vous pouvez utiliser cette interface pour stocker et récupérer à la fois des valeurs de chaîne et des valeurs entières :

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
}
Copier après la connexion

En tirant parti l'interface d'entrée, vous pouvez gérer de manière transparente les valeurs de chaîne et les valeurs entières dans votre structure Go, offrant ainsi une plus grande flexibilité et une plus grande réutilisabilité du code.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal