golang博客指出:
"也可以通过"切片"现有切片或数组来形成切片.通过指定半开放范围来完成切片,其中两个索引用冒号分隔.例如,表达式b [1:4]创建一个切片,包括b的元素1到3(结果切片的索引将是0到2)."
有人可以向我解释上面的逻辑.IE浏览器.为什么b [1:4]没有参考元素1到4?这与其他阵列引用一致吗?
索引指向元素的"开始".所有使用从零开始的索引的语言共享:
| 0 | first | 1 | second | 2 | third | 3 | fourth | 4 | fifth | 5 |
[0] = ^
[0:1] = ^ --------> ^
[1:4] = ^-------------------------------------> ^
[0:5] = ^ ----------------------------------------------------------> ^
Run Code Online (Sandbox Code Playgroud)
支持负索引也很常见,尽管Go不允许这样做:
|-6 | |-5 | |-4 | |-3 | |-2 | |-1 |
| 0 | first | 1 | second | 2 | third | 3 | fourth | 4 | fifth | 5 |
Run Code Online (Sandbox Code Playgroud)
原因在 Go 语言规范的Slices部分给出。
对于字符串、数组或切片 a,主表达式
Run Code Online (Sandbox Code Playgroud)a[low : high]
构造一个子字符串或切片。索引表达式 low 和 high 选择哪些元素出现在结果中。结果的索引从 0 开始,长度等于高 - 低。
为了方便起见,可以省略任何索引表达式。缺失的低指数默认为零;缺少的高索引默认为切片操作数的长度。
计算切片长度的高 - 低非常简单且高效。
归档时间: |
|
查看次数: |
3644 次 |
最近记录: |