我不明白 Go 中的切片聲明。因?yàn)?,我聲明?shù)組的第一個(gè)和第二個(gè)元素必須是 0:1。但它是0:2。為什么?我應(yīng)該如何閱讀這個(gè),從零到 2 減 1(一直)?var slice = array[0:2]
2 回答

嚕嚕噠
TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超7個(gè)贊
切片邊界是半開的,這對(duì)于許多編程語言來說是非常標(biāo)準(zhǔn)的。一個(gè)優(yōu)點(diǎn)是它使范圍的長度變得明顯 (2-0=2)。具體來說,這樣做很常見:
s[start:start+len]
很明顯,這會(huì)len
從切片中選擇元素,從start
.?如果范圍將完全關(guān)閉(包括兩個(gè)邊界),則代碼中必須有很多-1
s 來處理切片和子切片。
它在 C++ 范圍和 Python 等中的工作方式類似。
您希望范圍的大小是一個(gè)簡單的差異 end - begin;
當(dāng)序列退化為空序列時(shí),包括下限更“自然”,而且因?yàn)樘娲桨福ú话ㄏ孪蓿┬枰嬖凇伴_始前的一個(gè)”標(biāo)記值。

繁星點(diǎn)點(diǎn)滴滴
TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超3個(gè)贊
通過指定兩個(gè)索引(下限和上限)來形成切片,用冒號(hào)分隔:
a[low : high]
這將選擇一個(gè)半開范圍,其中包括第一個(gè)元素,但不包括最后一個(gè)元素。
- 2 回答
- 0 關(guān)注
- 186 瀏覽
添加回答
舉報(bào)
0/150
提交
取消