|  double | 
 | 
double | 
double | 
float | 
float64 | 
double | 
float | 
Float | 
|  float | 
 | 
float | 
float | 
float | 
float32 | 
float | 
float | 
Float | 
|  int32 | 
Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | 
int32 | 
int | 
int | 
int32 | 
int | 
integer | 
Bignum or Fixnum (as required) | 
|  int64 | 
Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | 
int64 | 
long | 
int/long | 
int64 | 
long | 
integer/string | 
Bignum | 
|  uint32 | 
Uses variable-length encoding. | 
uint32 | 
int | 
int/long | 
uint32 | 
uint | 
integer | 
Bignum or Fixnum (as required) | 
|  uint64 | 
Uses variable-length encoding. | 
uint64 | 
long | 
int/long | 
uint64 | 
ulong | 
integer/string | 
Bignum or Fixnum (as required) | 
|  sint32 | 
Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | 
int32 | 
int | 
int | 
int32 | 
int | 
integer | 
Bignum or Fixnum (as required) | 
|  sint64 | 
Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | 
int64 | 
long | 
int/long | 
int64 | 
long | 
integer/string | 
Bignum | 
|  fixed32 | 
Always four bytes. More efficient than uint32 if values are often greater than 2^28. | 
uint32 | 
int | 
int | 
uint32 | 
uint | 
integer | 
Bignum or Fixnum (as required) | 
|  fixed64 | 
Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | 
uint64 | 
long | 
int/long | 
uint64 | 
ulong | 
integer/string | 
Bignum | 
|  sfixed32 | 
Always four bytes. | 
int32 | 
int | 
int | 
int32 | 
int | 
integer | 
Bignum or Fixnum (as required) | 
|  sfixed64 | 
Always eight bytes. | 
int64 | 
long | 
int/long | 
int64 | 
long | 
integer/string | 
Bignum | 
|  bool | 
 | 
bool | 
boolean | 
boolean | 
bool | 
bool | 
boolean | 
TrueClass/FalseClass | 
|  string | 
A string must always contain UTF-8 encoded or 7-bit ASCII text. | 
string | 
String | 
str/unicode | 
string | 
string | 
string | 
String (UTF-8) | 
|  bytes | 
May contain any arbitrary sequence of bytes. | 
string | 
ByteString | 
str | 
[]byte | 
ByteString | 
string | 
String (ASCII-8BIT) |