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
Patricia Arquetteoriginal
2024-12-03 10:58:09939parcourir

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
}

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!

Déclaration:
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