Représentation des chaînes facultatives dans Go
Go ne fournit pas nativement de types de variantes comme Peut-être ou Facultatif. De plus, null n'est pas membre du type chaîne dans Go. Une approche potentielle pour représenter une chaîne facultative consiste à utiliser un pointeur vers une chaîne (*string). Cependant, cette approche peut s'avérer lourde.
Utiliser juste une chaîne
Dans certains cas, il peut être possible d'utiliser simplement une chaîne, où la chaîne vide "" est utilisé pour indiquer une valeur absente. Cela peut être suffisant pour certains scénarios, notamment lorsque la chaîne vide n'est pas une valeur valide pour le contexte donné.
Cependant, dans les situations où la chaîne vide représente une valeur valide, une technique alternative est nécessaire.
Définition d'une séquence UTF-8 invalide
Puisqu'une chaîne dans Go est une tranche d'octets en lecture seule représentant Texte codé en UTF-8, une séquence d'octets UTF-8 non valide peut être définie comme une valeur spéciale pour représenter une chaîne facultative absente.
Par exemple, envisagez de définir la constante suivante :
const Null = "\xff"
Cette constante représente une séquence UTF-8 invalide d'un seul octet. Étant donné que la chaîne vide est toujours autorisée, cette approche fournit un moyen simple de gérer les chaînes facultatives.
Exemple d'utilisation
L'extrait de code suivant illustre l'utilisation de cette technique :
import ( "fmt" "strings" ) const Null = "\xff" func main() { // Check if a string is valid UTF-8 fmt.Println(strings.ValidUTF8([]byte(Null))) // false // Example optional string using the Null constant var optionalString = Null fmt.Println([]byte(optionalString)) // [255] // Comparison with Null fmt.Println(optionalString == Null) // true // Update optional string optionalString = "notnull" fmt.Println(optionalString == Null) // false }
Cette technique permet une représentation simple et efficace des chaînes facultatives dans Go, offrant une alternative à l'utilisation de pointeurs ou emballages.
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!