В качестве примера, чтобы прояснить мой вопрос, в Google Go 1.0, следующий интерфейс определяется в "io" package:Число прочитанных байтов и без знака
type Reader interface {
Read(p []byte) (n int, err error)
}
Особенно список параметров результата (n int, err error)
интригует меня. Искробезопасный количество байт не может быть отрицательным, в соответствии с документацией интерфейса:
возвращает количество считанных байт (0 < = п < = LEN (р)) [...]
В C причина использования int
была внутриполосным значением -1
, чтобы сигнализировать об ошибке (см. Effective Go: Multiple return values). Из-за множества возвращаемых значений специальные внутриполосные значения не нужны.
Существует type uint
в Go 1.0.
Какова конкретная причина использования int
по сравнению с uint
в случае значений, которые используют только положительный диапазон [0, ∞), без необходимости иметь специальные внутриполосные значения?