像 [0:2] 这样的切片声明

我不明白 Go 中的切片声明。

因为,我声明数组的第一个和第二个元素必须是 0:1。但它是0:2。为什么?我应该如何阅读这个,从零到 2 减 1(一直)?

var slice = array[0:2]


达令说
浏览 137回答 2
2回答

噜噜哒

切片边界是半开的,这对于许多编程语言来说是非常标准的。一个优点是它使范围的长度变得明显 (2-0=2)。具体来说,这样做很常见:s[start:start+len]很明显,这会len从切片中选择元素,从start. 如果范围将完全关闭(包括两个边界),则代码中必须有很多-1s 来处理切片和子切片。它在 C++ 范围和 Python 等中的工作方式类似。您希望范围的大小是一个简单的差异 end - begin;当序列退化为空序列时,包括下限更“自然”,而且因为替代方案(不包括下限)需要存在“开始前的一个”标记值。

繁星点点滴滴

通过指定两个索引(下限和上限)来形成切片,用冒号分隔:a[low : high]这将选择一个半开范围,其中包括第一个元素,但不包括最后一个元素。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go