Dans le contexte de l'analyse des arguments de ligne de commande à l'aide de docopt, les valeurs stockées dans la carte résultante sont de le type interface{}, qui peut représenter n’importe quel type de données. Cependant, lorsque vous tentez de concaténer les valeurs de cette carte en une chaîne, une erreur se produit en raison d'une incompatibilité de type.
Pour résoudre ce problème, une assertion de type est requise pour convertir les valeurs de l'interface{} en chaînes avant la concaténation. Ceci est particulièrement important car la carte est de type map[string]interface{}, où les valeurs peuvent varier en type.
Le code mis à jour serait le suivant :
host := arguments["<host>"].(string) + ":" + arguments["<port>"].(string)
Ceci L'assertion de type convertit explicitement les valeurs de l'interface{} en chaînes, garantissant ainsi une concaténation réussie.
Alternativement, dans la dernière version de docopt, l'objet Opts renvoyé fournit des méthodes pratiques pour la conversion :
host, err := arguments.String("<host>") port, err := arguments.String("<port>") host_port := host + ":" + port
Ces méthodes géreront la conversion en chaînes et renverront les valeurs converties, simplifiant le code et éliminant le besoin d'assertion de type dans ce cas.
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!