作为澄清我的问题的例子,在Google Go 1.0中,在"io"包中定义了以下接口:"Reader"。
特别是结果参数列表
Go 1.0中存在类型
对于只使用正范围[0,∞)而不需要特殊带内值的值,为什么要使用
type Reader interface {
Read(p []byte) (n int, err error)
}
特别是结果参数列表
(n int, err error)
引起了我的兴趣。根据接口文档,字节数本质上不可能为负数:
在C语言中,使用它返回读取的字节数(0 <= n <= len(p))[...]
int
的原因是使用带内值-1
来表示错误条件(参见Effective Go: Multiple return values)。由于多个返回值,特殊的带内值是不必要的。Go 1.0中存在类型
uint
。对于只使用正范围[0,∞)而不需要特殊带内值的值,为什么要使用
int
而不是uint
?