1 回答

TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊
s1
打印[1]
是因?yàn)樗情L度為 1 的切片,并且在該長度內(nèi)包含元素 1。它的長度為 1,因?yàn)樗?code>sfrom0
to 的一部分1
。因此,s1 := s[0:1]
s
打印值[]
,因?yàn)樗情L度為 0 的切片。當(dāng)長度為 0 時(shí)沒有值可顯示,因此括號之間沒有任何內(nèi)容。它的長度為 0,因?yàn)樗窃?code>make調(diào)用中指定的。當(dāng)make
用于制作切片時(shí),第二個(gè)參數(shù)是切片的長度。s[0:10]
可能會打印[1 0 0 0 0 0 0 0 0 0]
,因?yàn)樵试S將現(xiàn)有切片重新切片為其整個(gè)底層容量,而不僅僅是長度。由于重新切片從0
到10
,它將包含 10 個(gè)值(切片的第二個(gè)邊界不包含在內(nèi))。這就是您在打印輸出中看到所有 10 個(gè)值的原因。作為獎(jiǎng)勵(lì),
s[0:10]
不能是[]
因?yàn)檫@意味著您指定一個(gè)長度為 10 的切片并返回一個(gè)長度為 0 的切片。在 Go 中,切片的長度s[a:b]
始終為b - a
. 如果那不可能,那么程序就會崩潰。它不會給你一些其他長度的切片。請參閱語言規(guī)范中對這些規(guī)則的解釋:https ://go.dev/ref/spec#Slice_expressions
- 1 回答
- 0 關(guān)注
- 164 瀏覽
添加回答
舉報(bào)