首頁  >  文章  >  後端開發  >  當陣列長度不為空時,為什麼我的 Go 程式碼會拋出「panic: runtime error: index out of range」錯誤?

當陣列長度不為空時,為什麼我的 Go 程式碼會拋出「panic: runtime error: index out of range」錯誤?

DDD
DDD原創
2024-11-01 06:34:02197瀏覽

Why Does My Go Code Throw a

「數組長度不為空時出現「panic: 運行時錯誤:索引超出範圍」

分析

分析

分析

分析

分析

分析

由於存取超出允許範圍的索引,提供的Go 程式碼遇到運行時錯誤。理解切片

Go 切片是數組段的描述符,它包含指向數組的指針、段的長度及其容量(段的最大長度)。 ([]string, 0, 4) 與make([]string, 4)

make 函數初始化並指派切片result := make。為0、容量為4 的切片,而result := make([]string, 4) (或其等效result := []string{"", "", "" , ""}) 初始化一個長度和容量皆為4 的切片。 0] 將導致執行時間錯誤,相反, result := make([]string, 4) 有四個字串元素,允許存取result[0]、result[1]、 result[2] 和result[3]。

<code class="go">package main

import "fmt"

func main() {
    fmt.Println(myFunc("Political srt"))
}

func myFunc(input string) []string {
    strs := strings.Fields(input)
    result := make([]string, 0) // Initialize with length 0 and append as needed
    for _, s := range strs {
        if strings.ContainsAny(s, "eaiu") {
            result = append(result, s) // Append to the result slice
        }
    }
    return result
}</code>
程式碼的解在myFunc 函數中,您使用有問題的結果:= make([]string , 0, 4) 初始化。程式碼需要附加元素,您應該考慮使用result := make([]string, 0) 並使用append 函數附加元素。 4),取決於您的特定要求。

以上是當陣列長度不為空時,為什麼我的 Go 程式碼會拋出「panic: runtime error: index out of range」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn