首頁  >  文章  >  後端開發  >  如何在golang中將切片的長度定義為陣列?

如何在golang中將切片的長度定義為陣列?

WBOY
WBOY轉載
2024-02-08 21:45:24324瀏覽

如何在golang中將切片的長度定義為陣列?

在Golang中,切片與陣列是兩種不同的資料型別。切片是一個動態長度的序列,而陣列是一個固定長度的序列。如果你想將切片的長度定義為數組,可以透過建立一個固定長度的數組,然後使用切片來引用該數組來實現。具體操作是先建立一個指定長度的數組,然後使用切片來引用該數組的一部分元素,這樣就可以將切片的長度定義為數組的長度了。這種方式可以在一定程度上模擬數組的行為,同時也能夠利用切片的彈性。希望這個簡短的回答對你有幫助!

問題內容

我有一個切片數組,我想定義切片的長度,因為當我嘗試啟動程式碼時會出現恐慌:

panic: runtime error: index out of range [0] with length 0

程式碼:

func Transpose(m [][]int) [][]int{
    arr := make([][]int, len(m))

    for i:=0; i <len(arr); i++ {
        for j:=0; j<len(arr); j++ {
            arr[j][i] = m[i][j]
        }
    }
    
return arr
}

解決方法

問題是您尚未初始化每個內部切片。 arr := make([][]int, len(m)) 僅初始化 arr 切片的外循環。

func Transpose(m [][]int) [][]int {
    arr := make([][]int, len(m))

    for i := 0; i < len(m); i++ {

        arr[i] = make([]int, len(m[i]))

        for j := 0; j < len(m[i]); j++ {
            arr[i][j] = m[j][i]
        }
    }

    return arr
}

以上是如何在golang中將切片的長度定義為陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除