protobuf 릴리스 3.12 이후 , proto3은 optional
스칼라 필드 존재 정보를 제공하기 위해 키워드 (proto2에서와 마찬가지로)를 사용하는 실험적 지원 을 제공합니다.
syntax = "proto3";
message Foo {
int32 bar = 1;
optional int32 baz = 2;
}
has_baz()
/의 hasBaz()
방법은에 대해 생성되는 optional
것이 proto2에 있었던 것과 같이, 상기 필드.
내부적으로 protoc 은 CyberSnoopy의 답변에서 알 수 있듯이 optional
필드를 oneof
래퍼를 사용하여 선언 된 것처럼 효과적으로 처리 합니다.
message Foo {
int32 bar = 1;
oneof optional_baz {
int32 baz = 2;
}
}
이미 해당 접근 방식을 사용 했다면 proto3 가 실험 상태를 졸업 한 후 연결 형식이 동일하기 때문에 메시지 선언을 정리 (에서 oneof
로 전환 optional
) 할 수 있습니다 optional
.
필드 프레즌스 및 optional
proto3에 대한 핵심 세부 사항은 애플리케이션 노트 : 필드 프레즌스 문서에서 확인할 수 있습니다.
--experimental_allow_proto3_optional
릴리스 3.12에서이 기능을 사용 하려면 플래그를 protoc에 전달하십시오. 기능 발표 는 "3.13에 희망 일반적으로 사용"할 것이라고 말했습니다.
2020 년 11 월 업데이트 :이 기능은 릴리스 3.14 에서 아직 실험적 (플래그 필요)으로 간주됩니다 . 진행중인 징후 가 있습니다 .