


Wie assoziieren Sie einen Enumswert mit einer String -Konstante in Protobuf?
Die Assoziation von Protobuf -Zählertyp und Stringkonstanten
In diesem Artikel wird erläutert, wie die Enumtypen in Protobuf definiert werden und eine String -Konstante für jeden Enumswert assoziieren, der für die Verwendung in verschiedenen Programmiersprachen zweckmäßig ist.
Möglicherweise haben Sie beispielsweise einen einfachen Enum -Typ definiert:
Enumtypen { Typ_0 = 0; Typ_1 = 1; Typ_2 = 2; }
Es ist unmöglich, String -Konstanten zu den ENUM -Werten direkt in der .proto
-Datei hinzuzufügen. Protobuf selbst unterstützt die explizite Definition solcher Kartierungsbeziehungen nicht direkt. Der generierte Code bietet jedoch indirekten Zugriff.
Lösungen für verschiedene Programmiersprachen:
Der Protobuf-Compiler generiert einen sprachspezifischen Code basierend auf Ihrer .proto
Datei. Diese Codes enthalten Zuordnungsbeziehungen zwischen Enum -Werten und Stringnamen.
C: Sie können die Funktion
Foo_Name(value)
verwenden (wobeiFoo
der Namen des Enum -Typs ist), um den String -Namen zu erhalten, der dem angegebenen Enum -Wert entspricht. Wenn der Umlaufwert nicht vorhanden ist, wird eine leere Zeichenfolge zurückgegeben. Wenn mehrere Enumwerte demselben numerischen Wert entsprechen, wird der erste Definitionsname zurückgegeben.Go: Der Compiler generiert automatisch zwei Zuordnungen:
Foo_name
(int32 bis string) undFoo_value
(String to INT32). Sie können diese Zuordnungen direkt verwenden, um Enumwerte und Stringkonstanten umzuwandeln.Andere Sprachen: Andere Sprachen, die Protobuf unterstützen (wie Java, Python), liefern ebenfalls ähnliche Mechanismen. Für bestimmte Methoden finden Sie in der Protobuf -Dokumentation der entsprechenden Sprache.
Beispiel (Go):
Nehmen wir an, Ihre .proto
-Datei definiert die oben genannten Types
. Im generierten GO -Code wird eine Kartierung ähnlich wie folgt vorhanden:
var type_name = map [int32] String { 0: "Typ_0", 1: "Typ_1", 2: "type_2", } var type_value = map [string] int32 { "Typ_0": 0,, "Typ_1": 1, "Typ_2": 2, }
Sie können diese Zuordnungen wie diese verwenden:
StringValue: = type_name [type.type_1] // StringValue lautet "type_1". intValue: = Typen_Value ["type_0"] // intvalue ist 0
Zusammenfassung: Obwohl der Zusammenhang zwischen Enum -Werten und String -Konstanten nicht direkt in der .proto
-Datei definiert werden kann, bietet der generierte Code einen bequemen Mechanismus für die Implementierung dieser Zuordnung und vermeidet so die Arbeit der manuellen Wartung der Zuordnungstabelle. In der Protobuf -Dokumentation für die Programmiersprache, die Sie verwenden, finden Sie für bestimmte Implementierungsdetails.
Das obige ist der detaillierte Inhalt vonWie assoziieren Sie einen Enumswert mit einer String -Konstante in Protobuf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Zu den Kernmerkmalen von GO gehören die Müllsammlung, statische Verknüpfung und Unterstützung der Parallelität. 1. Das Parallelitätsmodell von GO -Sprache realisiert eine effiziente gleichzeitige Programmierung durch Goroutine und Kanal. 2. Schnittstellen und Polymorphismen werden durch Schnittstellenmethoden implementiert, so dass verschiedene Typen einheitlich verarbeitet werden können. 3. Die grundlegende Verwendung zeigt die Effizienz der Funktionsdefinition und des Aufrufs. 4. In der fortgeschrittenen Verwendung bieten Scheiben leistungsstarke Funktionen der dynamischen Größenänderung. 5. Häufige Fehler wie Rassenbedingungen können durch Getest-Race erkannt und gelöst werden. 6. Leistungsoptimierung wiederverwenden Objekte durch Sync.Pool, um den Druck der Müllabfuhr zu verringern.

Go Language funktioniert gut beim Aufbau effizienter und skalierbarer Systeme. Zu den Vorteilen gehören: 1. hohe Leistung: Kompiliert in den Maschinencode, schnelle Laufgeschwindigkeit; 2. gleichzeitige Programmierung: Vereinfachen Sie Multitasking durch Goroutinen und Kanäle; 3. Einfachheit: präzise Syntax, Reduzierung der Lern- und Wartungskosten; 4. plattform: Unterstützt die plattformübergreifende Kompilierung, einfache Bereitstellung.

Verwirrt über die Sortierung von SQL -Abfragenergebnissen. Während des Lernens von SQL stoßen Sie häufig auf einige verwirrende Probleme. Vor kurzem liest der Autor "Mick-SQL Basics" ...

Die Beziehung zwischen Technologiestapelkonvergenz und Technologieauswahl in der Softwareentwicklung, der Auswahl und dem Management von Technologiestapeln ist ein sehr kritisches Problem. In letzter Zeit haben einige Leser vorgeschlagen ...

Golang ...

Wie man drei Strukturen in der GO -Sprache vergleicht und umgeht. Bei der Go -Programmierung ist es manchmal notwendig, die Unterschiede zwischen zwei Strukturen zu vergleichen und diese Unterschiede auf die ...

Wie kann ich weltweit installierte Pakete in GO betrachten? Bei der Entwicklung mit GO -Sprache verwendet GO oft ...

Was soll ich tun, wenn die benutzerdefinierten Strukturbezeichnungen in Goland nicht angezeigt werden? Bei der Verwendung von Goland für GO -Sprachentwicklung begegnen viele Entwickler benutzerdefinierte Struktur -Tags ...


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

SublimeText3 Linux neue Version
SublimeText3 Linux neueste Version

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor