duanjingwei7239 2017-05-29 06:35
浏览 204
已采纳

在Go中,为什么对于容量= 1的切片,a [1:]为什么不给出超出范围的索引错误? [重复]

This question already has an answer here:

Why does the following code not give a "slice bounds out of range" error?

a := []int{0}
a = a[1:]
fmt.Println(a) // []
</div>
  • 写回答

1条回答 默认 最新

  • duanhuan3012 2017-05-29 06:50
    关注

    Because the Go specification for slice expressions states:

    For a string, array, pointer to array, or slice a, the primary expression

    a[low : high]

    constructs a substring or slice.

    ...

    For convenience, any of the indices may be omitted. A missing low index defaults to zero; a missing high index defaults to the length of the sliced operand:

    a[2:] // same as a[2 : len(a)]

    ...

    For arrays or strings, the indices are in range if 0 <= low <= high <= len(a), otherwise they are out of range.

    In your case, len(a) is 1, and a[1:] is the same as a[1:1], which means it is within range.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 请问如何在openpcdet上对KITTI数据集的测试集进行结果评估?
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路
  • ¥15 phython读取excel表格报错 ^7个 SyntaxError: invalid syntax 语句报错