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 }
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 }
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)) }
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 }
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 }
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!