首頁 > 後端開發 > Golang > 為什麼在 Go 切片中出現切片邊界超出範圍錯誤?

為什麼在 Go 切片中出現切片邊界超出範圍錯誤?

Mary-Kate Olsen
發布: 2024-11-29 12:46:10
原創
164 人瀏覽過

Why Do I Get a Slice Bounds Out of Range Error in Go Slicing?

切片:Go 中的越界錯誤

在 Go 中,切片涉及提取現有切片的一部分以建立新切片片。當切片過程中出現越界錯誤時,表示指定範圍超出了來源切片的有效索引邊界。

考慮以下程式碼片段:

 package main<p>import "fmt"</p><p>func main() {</p><p>func main() {</p><p></p>func main() {<p><br>func main() {</p><p></p>}<p>func printSlice(s string, x []int) {</p><p><strong>}</strong></p>
登入後複製

執行此程式碼會導致越界error:

  • 要理解為什麼會出現這個錯誤,我們需要深入研究Go 中的切片規則。
  • 切片規則
切片規則或陣列時,指定的索引可以是明確的,也可以是隱式的。如果未明確提供索引,則它預設為特定值。對於切片:

缺少的下限預設為 0。

缺少的上限預設為 len(slice)

(不是 cap(slice))。

在給定的程式碼中,發生錯誤是因為建立c 切片的切片表達式is:

這表示明確指定了下限(1),但未明確指定上限。因此,它預設為 len(b),即 0。但是,指定的下限 (1) 必須小於或等於上限 (0)。不符合此條件,導致越界錯誤。 要避免此錯誤,可以明確指定下限和上限。例如,要從b 切片中只提取第二個元素,您可以編寫:或者,如果您想從第二個元素開始提取整個b 切片,您可以使用:

以上是為什麼在 Go 切片中出現切片邊界超出範圍錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板