为什么Go里面大多数的接口返回的是int类型

go 的 len(), mgo 的 Count(),redis 库的相关 API 等,明明返回值只可能是 0 和正整数,但都用 int

已邀请:

astaxie - 创造、获取、分享、传播和应用Go

赞同来自: wwek senlixiushu

len出来的值是检查用于计算的,如果是uint的话,那么加减一下负数就不行了


详见:https://groups.google.com/forum/#!topic/golang-nuts/jJWAAMdquwQ

chai2010 - 数盲患者

赞同来自: Ky 小强

i := 0

默认的i是int类型, 如果len返回的是uint的话, 那么和i比较时则需要做类型转换.


还有Go的数组最大好像是2GB, 这可能是为了保证int32不会溢出. 这时候, int和uint都是len返回值的超集, 选择int当然是最好的了.


补充:
2GB只是针对非0大小的数组, 而且可能是和实现相关的. 如果是0长的元素, 数组可以很大: make([]struct{}, math.MaxInt64)

negronihe

赞同来自:

因为你可能要反顺序遍历一个数组。

要回复问题请先登录注册