Go builtin len()
функция возвращает подписанный int
. Почему вместо этого использовался uint
?
Возможно ли, что len()
вернет что-то отрицательное?
Насколько я могу судить, ответ отрицательный:
- Массивы: "Количество элементов называется длиной и никогда не является отрицательным".
- Slices: "В любое время выполняется следующее соотношение:
0 <= len(s) <= cap(s)
" - Карты "Количество элементов карты называется его длиной". (Я не мог найти ничего в спецификации, которая явно ограничивает это неотрицательным значением, но мне трудно понять, как на карте может быть меньше 0 элементов)
- Строки "Строковое значение - (возможно, пустая) последовательность байтов.... Длина строки s (ее размер в байты) можно открыть с помощью встроенной функции
len()
" (опять же, трудно понять, как последовательность может иметь отрицательное количество байтов) - Channels" количество элементов, помещенных в буфер канала (то же самое)