찾다
백엔드 개발Golangprotobuf 및 연결 문자열 상수에서 열거 유형을 정의하는 방법은 무엇입니까?

protobuf 및 연결 문자열 상수에서 열거 유형을 정의하는 방법은 무엇입니까?

프로토 부프 열거 유형 및 문자열 상수의 연관성

프로토콜 버퍼 (protobuf)를 사용하는 경우, 코드 읽기 및 디버깅을 용이하게하기 위해 열거 유형을 친숙한 문자열 설명과 연결해야합니다. Protobuf .proto 파일 자체는 열거 정의에 문자열 상수 추가를 직접 지원하지는 않지만 Protobuf 컴파일러는 열거 값과 문자열 이름 사이의 매핑을 구현하기 위해 코드를 자동으로 생성합니다.

간단한 열거 정의를 살펴 보겠습니다.

 Enum myenum {
  value_a = 0;
  value_b = 1;
  value_c = 2;
}

이 정의에 따르면, 컴파일러는 생성 된 코드에서 함수 또는 매핑 테이블을 생성하여 열거 값과 해당 문자열 이름 ( "value_a", "value_b", "value_c") 사이를 변환합니다.

다양한 프로그래밍 언어의 구현 방법 :

  • C : Protobuf 컴파일러는 const std::string& MyEnum_Name(int value) 과 같은 함수를 생성합니다. 이 함수는 열거 값을 입력으로 사용하고 해당 열거 이름 문자열을 반환합니다. 입력 값이 유효하지 않으면 빈 문자열이 반환됩니다.

  • GO : GO에서 두 개의 매핑 테이블이 생성됩니다 : var MyEnum_name = map[int32]string{...} (이름으로 값) 및 var MyEnum_value = map[string]int32{...} (이름 to value). 이를 통해 GO 코드에서 양방향 변환을 쉽게 수행 할 수 있습니다.

  • Java : GO와 마찬가지로 Java는 열거 값과 문자열 이름 사이의 변환을 용이하게하기 위해 매핑 테이블을 생성합니다.

  • Python : Python은 비슷한 방식으로 구현되어 열거 된 값과 문자열 이름을 쉽게 변환하는 방법을 제공합니다.

.proto 파일에서 문자열 상수를 명시 적으로 정의 할 필요가 없습니다.

.proto 파일의 각 열거 값에 대해 문자열 상수를 명시 적으로 추가 할 필요는 없습니다. Protobuf 컴파일러는 열거 정의를 기반으로 이러한 매핑 관계를 자동으로 생성하고 생성 된 코드에서 해당 액세스 방법을 제공합니다.

요약 :

Protobuf의 디자인은 열고 유형과 스트링 상수의 연관 문제를 영리하게 해결합니다. 컴파일러에서 자동으로 생성 된 코드를 통해 다양한 프로그래밍 언어로 이러한 매핑 관계를 쉽게 사용할 수있어 코드의 가독성과 유지 보수 가능성을 향상시킬 수 있습니다. 특정 프로그래밍 언어의 구현 세부 사항에 대해 더 깊이 이해해야하는 경우 Protobuf의 공식 문서를 참조하십시오.

위 내용은 protobuf 및 연결 문자열 상수에서 열거 유형을 정의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
详细讲解Python之Seaborn(数据可视化)详细讲解Python之Seaborn(数据可视化)Apr 21, 2022 pm 06:08 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于Seaborn的相关问题,包括了数据可视化处理的散点图、折线图、条形图等等内容,下面一起来看一下,希望对大家有帮助。

详细了解Python进程池与进程锁详细了解Python进程池与进程锁May 10, 2022 pm 06:11 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于进程池与进程锁的相关问题,包括进程池的创建模块,进程池函数等等内容,下面一起来看一下,希望对大家有帮助。

Python自动化实践之筛选简历Python自动化实践之筛选简历Jun 07, 2022 pm 06:59 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于简历筛选的相关问题,包括了定义 ReadDoc 类用以读取 word 文件以及定义 search_word 函数用以筛选的相关内容,下面一起来看一下,希望对大家有帮助。

归纳总结Python标准库归纳总结Python标准库May 03, 2022 am 09:00 AM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于标准库总结的相关问题,下面一起来看一下,希望对大家有帮助。

Python数据类型详解之字符串、数字Python数据类型详解之字符串、数字Apr 27, 2022 pm 07:27 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于数据类型之字符串、数字的相关问题,下面一起来看一下,希望对大家有帮助。

分享10款高效的VSCode插件,总有一款能够惊艳到你!!分享10款高效的VSCode插件,总有一款能够惊艳到你!!Mar 09, 2021 am 10:15 AM

VS Code的确是一款非常热门、有强大用户基础的一款开发工具。本文给大家介绍一下10款高效、好用的插件,能够让原本单薄的VS Code如虎添翼,开发效率顿时提升到一个新的阶段。

详细介绍python的numpy模块详细介绍python的numpy模块May 19, 2022 am 11:43 AM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于numpy模块的相关问题,Numpy是Numerical Python extensions的缩写,字面意思是Python数值计算扩展,下面一起来看一下,希望对大家有帮助。

python中文是什么意思python中文是什么意思Jun 24, 2019 pm 02:22 PM

pythn的中文意思是巨蟒、蟒蛇。1989年圣诞节期间,Guido van Rossum在家闲的没事干,为了跟朋友庆祝圣诞节,决定发明一种全新的脚本语言。他很喜欢一个肥皂剧叫Monty Python,所以便把这门语言叫做python。

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기