我不了解Go中的切片声明。
对于,我对数组的第一个和第二个元素的声明必须为0:1。 但这是0:2。为什么?我应该怎么读,从零到2减去1(一直)?
var slice = array[0:2]
答案 0 :(得分:7)
切片边界为half open,这对于许多编程语言来说都是非常标准的。一个优点是,它使范围的长度很明显(2-0 = 2)。具体来说,通常这样做:
s[start:start+len]
很明显,这会从切片中选择len
元素,从start
开始。如果范围是完全封闭的(包括两个边界),则代码中将有很多-1
来处理切片和细分。
它在C ++范围和Python等中也类似。这是归因于Dijkstra的C++ answer的一些原因:
您希望范围的大小是一个简单的差异-开始;
更加“自然”,并且还因为替代项(不包括下界)将需要存在“一个从头开始”的前哨值
答案 1 :(得分:1)
通过指定两个索引(下限和上限)形成切片 用冒号分隔:
a[low : high]
这将选择一个半开范围,其中包括第一个 元素,但不包括最后一个。
这是Golang在切片https://tour.golang.org/moretypes/7上的页面