Protobuffer에서의 Field 모두 Scalar 라고 합니다. Scalar라 하면 사실상 원시값을 의미하게 되고, 이 뜻은 Null 이 없고 별도의 Default value 가 있음을 의미합니다. 실제로 Defalut value가 존재합니다. (gRPC Docs | Scalar Value Types)
이러한 기본 값이 있다는 것은 해당 값이 실제로 있는 지, 아니면 기본 값인지를 판별하는 감시값이 매우 애매해진다는 것과 동일합니다. 그렇기 때문에 Protobuf에서는 공식적으로 Wrapper 클래스를 제공합니다.
출처 : Github | protobuf
아래의 코드처럼, value를 message로 감싸게 되고, 코드에서는 HasField 를 통해서 존재하는 지 확인할 수 있습니다.