Maison >développement back-end >Golang >Comment corriger les champs redéfinis dans la définition du tampon de protocole dans Go ?
Je construis un client gRPC à l'aide du fichier .proto du fournisseur et j'ai plusieurs énumérations contenant des valeurs du même nom.
syntax = "proto3"; enum Color { NONE = 0; BLUE = 1; } enum Style { SOLID = 0; NONE = 1; }
Ainsi, lorsque je génère le service Go pour le fichier .proto et que j'essaie de l'exécuter, j'obtiens l'erreur suivante :
...\deal.pb.go:460:2: NONE redeclared in this block ...\deal.pb.go:105:2: other declaration of NONE
J'ai essayé de déplacer des énumérations dans des messages, par exemple en déplaçant des couleurs dans des formes, et je m'attendais à ce que cela fournisse un espace de noms différent. Mais ça ne sert à rien. Le code généré déclare des blocs constants et le message ne fournit pas l'espacement des noms que je souhaite. Cela fonctionne pour C#.
const ( NONE Shape = 0 BLUE Shape = 1 )
Des idées sur la façon de résoudre ce problème ?
Vous devez renommer les valeurs d'énumération car le principal problème dans le code fourni est que le code Go généré contient deux constantes nommées NONE, dont l'une vient de l'énumération Color et la Style Une des énumérations. Cela provoque un conflit de noms car en go, toutes les constantes du code protobuf généré existent au niveau du package, ce qui en fait des variables globales du package. Alors, vous pouvez peut-être essayer ceci :
enum Color { COLOR_NONE = 0; COLOR_BLUE = 1; } enum Style { STYLE_SOLID = 0; STYLE_NONE = 1; }
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!