Maison > développement back-end > Golang > Comment pouvez-vous stocker à la fois les valeurs String et Int dans une structure Go ?

Comment pouvez-vous stocker à la fois les valeurs String et Int dans une structure Go ?

Patricia Arquette
Libérer: 2024-12-03 10:58:09
original
937 Les gens l'ont consulté

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

Stockage des valeurs String et Int dans une structure Go

Dans Go, il n'est pas possible de stocker à la fois les valeurs String et Int directement dans une structure Go. champ de structure unique. Cela est dû au système de types fort du langage, qui nécessite que les variables aient des types spécifiques et bien définis.

Solutions possibles

Pour contourner cette limitation, vous avez quelques options :

  1. Convertir l'entrée dynamiquement : Vous pouvez convertir l'entrée int en chaîne lorsque nécessaire et reconvertissez-le en int lors du traitement.
  2. Définir plusieurs structures : Vous pouvez définir des structures distinctes pour différents types d'entrée, tels que testCaseString et testCaseInt.
  3. Implémentation de l'interface : Depuis Go 1.18, vous pouvez utiliser les interfaces comme solution de contournement. Bien que Go n'ait pas de types de somme natifs, il vous permet de définir des interfaces que plusieurs types peuvent implémenter.

Implémentation d'interface dans Go 1.18 et au-delà

À l’aide d’une interface, vous pouvez créer un type pouvant contenir à la fois des valeurs de chaîne et des valeurs int. Voici un exemple :

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

Vous pouvez désormais utiliser la structure TestCaseBool pour contenir soit une valeur booléenne, soit une interface vide.

Remarque : Cette solution nécessite Go 1.18 ou supérieur pour travailler.

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