L'assertion de type, la méthode .(data_type) dans Go, est un outil puissant pour extraire des types spécifiques à partir des valeurs d'interface . Comme indiqué dans la question, le but de cette méthode est d'informer le compilateur sur le type d'une variable au moment de la compilation, spécifiquement afin que le compilateur puisse effectuer des opérations spécifiques au type.
Pour clarifier la compréhension présentée dans la question, l'assertion de type ne demande pas au compilateur de modifier le type sous-jacent d'une variable. Au lieu de cela, il permet au programmeur d'accéder à une valeur du type spécifié à partir d'une interface. Cette valeur extraite aura le type spécifié, permettant des opérations telles que le découpage, qui ne sont pas disponibles pour les valeurs d'interface.
L'exemple de code amélioré suivant illustre l'assertion de type :
package main import ( "fmt" "reflect" ) func main() { var b interface{} b = "silly" s, ok := b.(string) // Attempt type assertion with ok flag if !ok { fmt.Println("Type assertion failed: b does not contain a string.") } else { fmt.Println(reflect.TypeOf(s)) // we know that b // is a string // at compile time fmt.Println(s[0]) // Access the first character of the string } }
Ce code utilise le b.(string) et l'indicateur ok facultatif. Si b contient une chaîne, l'indicateur ok sera vrai et s sera de type chaîne. Cela nous permet d'accéder au premier caractère de la chaîne, opération qui n'a pas pu être effectuée directement sur la valeur de l'interface b.
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!