>  기사  >  백엔드 개발  >  Go의 프로토콜 버퍼 정의에서 재정의된 필드를 어떻게 수정하나요?

Go의 프로토콜 버퍼 정의에서 재정의된 필드를 어떻게 수정하나요?

王林
王林앞으로
2024-02-06 11:39:04612검색

如何修复 Go 中协议缓冲区定义中重新定义的字段?

질문 내용

공급자의 .proto 파일을 사용하여 gRPC 클라이언트를 구축 중이며 동일한 이름의 값이 포함된 여러 열거형이 있습니다.

으아아아

그래서 .proto 파일에 대한 Go 서비스를 생성하고 실행하려고 하면 다음 오류가 발생합니다.

으아아아

메시지 내에서 열거형을 이동해 보았습니다. 예를 들어 모양 내에서 색상을 이동했는데 이것이 다른 네임스페이스를 제공할 것으로 예상했습니다. 그러나 그것은 소용이 없습니다. 생성된 코드는 상수 블록을 선언하고 메시지는 내가 원하는 이름 간격을 제공하지 않습니다. 이것은 C#에서 작동합니다.

으아아아

이 문제를 해결하는 방법에 대한 아이디어가 있습니까?


정답


제공된 코드의 주요 문제는 생성된 Go 코드에 NONE이라는 두 개의 상수가 포함되어 있다는 것입니다. 그 중 하나는 Color 열거형과 스타일 열거형 중 하나입니다. Go에서는 생성된 protobuf 코드의 모든 상수가 패키지 수준에 존재하여 패키지의 전역 변수가 되기 때문에 이름 지정 충돌이 발생합니다. 그렇다면 다음을 시도해 보세요:

으아아아

위 내용은 Go의 프로토콜 버퍼 정의에서 재정의된 필드를 어떻게 수정하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제