Go內置len()
function返回一個簽名int
。爲什麼不使用uint
呢?爲什麼len()返回一個有符號的值?
len()
有可能返回負面的東西嗎?
至於我可以告訴大家,答案是否定的:
- Arrays:「元素的數量稱爲長度,從不爲負」
- Slices:「在任何時候滿足下面的關係:
0 <= len(s) <= cap(s)
」 - Maps「地圖元素的數量被稱爲它的長度」。 (我在規範中找不到任何明確將其限制爲非負值的任何內容,但我很難理解地圖中可能少於0個元素的情況)
- Strings「字符串值是(可能的空)字節序列....可以使用內置函數
len()
「(再次難以理解序列如何具有負數字節)發現字符串s的長度(其字節大小) - Channels「元素的數目通道緩衝器排隊(同上)
如果要解決切片的第2147483648個元素,「uint」可能會更好。但是,如果你想解決第4294967296個問題,你會遇到麻煩。 –