Допустим, у меня есть сообщение
message Something {
int32 foo = 1;
int32 bar = 2;
string baz = 3;
}
и я хочу изменить baz
на repeated string
. Действительно ли мне нужно изменить номер? (Например, до 4 и отказаться от 3).
Мы с другом обсуждаем это. Он более опытен в protobuffs (в которых я новичок), но, судя по моему чтению документации На самом деле я не понимаю, зачем это нужно.
Хотя документы не касаются проблемы напрямую, которую я видел, мои рассуждения таковы:
Вышеприведенное может быть сериализовано во что-то вроде
0001(32bits)0011(utf-8bits)0010(32bits)
И десериализация в основном читала бы это как
- о, хорошо, это 1, так что читаем следующие 32 бита
- о, хорошо, это 3, так что читайте следующие биты как utf-8
- хм, следующий - 2, так что читай следующие 32 как этот
Итак, согласно документу, когда вы добавляете repeated
:
это поле может повторяться любое количество раз (включая ноль) в правильно сформированном сообщении
Это говорит мне о том, что фактическое количество битов, которые мы читаем при встрече с 3
, не будет отличаться, мы просто можем встретить несколько троек. Следовательно, это проверка при сериализации и десериализации, но на самом деле не является частью кодирования.
Такая логика верна? Могу ли я продолжать использовать тот же номер? Или я что-то упускаю?