Wie definiere ich die Länge eines Slice als Array in Golang?

WBOY
Freigeben: 2024-02-08 21:45:24
nach vorne
346 Leute haben es durchsucht

Wie definiere ich die Länge eines Slice als Array in Golang?

In Golang sind Slices und Arrays zwei verschiedene Datentypen. Ein Slice ist eine Sequenz dynamischer Länge, während ein Array eine Sequenz fester Länge ist. Wenn Sie die Länge eines Slice als Array definieren möchten, können Sie dies tun, indem Sie ein Array mit fester Länge erstellen und dann das Slice verwenden, um auf dieses Array zu verweisen. Die spezifische Operation besteht darin, zunächst ein Array mit einer bestimmten Länge zu erstellen und dann einen Slice zu verwenden, um auf einen Teil der Elemente des Arrays zu verweisen, sodass die Länge des Slice als Länge des Arrays definiert werden kann. Dieser Ansatz kann das Verhalten von Arrays bis zu einem gewissen Grad simulieren und gleichzeitig die Flexibilität des Slicing nutzen. Ich hoffe, diese kurze Antwort hilft Ihnen!

Frageninhalt

Ich habe ein Array von Slices und möchte die Länge der Slices definieren, denn wenn ich versuche, den Code zu starten, bekomme ich Panik:

panic: runtime error: index out of range [0] with length 0
Nach dem Login kopieren

Code:

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
}
Nach dem Login kopieren

Workaround

Das Problem ist, dass Sie nicht jedes innere Slice initialisiert haben. arr := make([][]int, len(m)) 仅初始化 arr Die äußere Schleife des Schneidens.

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
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie definiere ich die Länge eines Slice als Array in Golang?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!