为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
达令说 2023-06-12 10:07:46
我不明白 Go 中的切片声明。因为,我声明数组的第一个和第二个元素必须是 0:1。但它是0:2。为什么?我应该如何阅读这个,从零到 2 减 1(一直)?var slice = array[0:2]
查看完整描述

2 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

切片边界是半开的,这对于许多编程语言来说是非常标准的。一个优点是它使范围的长度变得明显 (2-0=2)。具体来说,这样做很常见:

s[start:start+len]

很明显,这会len从切片中选择元素,从start. 如果范围将完全关闭(包括两个边界),则代码中必须有很多-1s 来处理切片和子切片。

它在 C++ 范围和 Python 等中的工作方式类似。

  • 您希望范围的大小是一个简单的差异 end - begin;

  • 当序列退化为空序列时,包括下限更“自然”,而且因为替代方案(不包括下限)需要存在“开始前的一个”标记值。


查看完整回答
反对 回复 2023-06-12
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

通过指定两个索引(下限和上限)来形成切片,用冒号分隔:

a[low : high]

这将选择一个半开范围,其中包括第一个元素,但不包括最后一个元素。

查看完整回答
反对 回复 2023-06-12
  • 2 回答
  • 0 关注
  • 109 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信