Что означает ключевое слово option в файле .proto? - PullRequest
1 голос
/ 08 апреля 2020

У меня есть образец файла helloworld.proto и я использую Python. Я не понимаю, что это ключевое слово option должно делать на этапе компиляции?

syntax = "proto3";
package services.helloworld;

option go_package = "github.com/xyz/api/go/services/helloworld";

1 Ответ

1 голос
/ 08 апреля 2020

Для python пользователя? Наверное, не так много. Опции анализируются в объектной модели DSL (FileDescriptorSet) и могут использоваться любым инструментом, обрабатывающим схему. Процессор "go" предположительно использует эту опцию для определения пакета / пространства имен / et c. Процессор python, с другой стороны, вероятно, не заинтересован удаленно. Не существует эквивалента «py», поэтому я предполагаю, что он не нужен для python. Что касается делает : из descriptor.proto:


  // Sets the Go package where structs generated from this .proto will be
  // placed. If omitted, the Go package will be derived from the following:
  //   - The basename of the package import path, if provided.
  //   - Otherwise, the package statement in the .proto file, if present.
  //   - Otherwise, the basename of the .proto file, without extension.
  optional string go_package = 11;

Различные варианты делают разные вещи; descriptor.proto, как правило, является лучшим источником для того, какие встроенные опции существуют (и что они делают), однако пользовательские опции могут быть определены сторонними инструментами.

...