Heim  >  Artikel  >  Backend-Entwicklung  >  Wie konvertiere ich in Go ein Array mit fester Größe in ein Slice mit variabler Größe?

Wie konvertiere ich in Go ein Array mit fester Größe in ein Slice mit variabler Größe?

Susan Sarandon
Susan SarandonOriginal
2024-11-08 11:39:02428Durchsuche

How to Convert a Fixed-Size Array to a Variable-Sized Slice in Go?

Konvertieren von Arrays fester Größe in Arrays (Slices) variabler Größe in Go

Sie versuchen, ein Array fester Größe zu konvertieren ( [32]Byte) in ein Slice variabler Größe ([]Byte) mithilfe des folgenden Codes:

package main

import (
    "fmt"
)

func main() {
    var a [32]byte
    b := []byte(a)
    fmt.Println(" %x", b)
}

Allerdings Der Compiler gibt den Fehler zurück:

./test.go:9: a (type [32]byte) kann nicht in type []byte konvertiert werden

Dieser Fehler tritt auf, weil die direkte Konvertierung von a Das Einfügen eines Arrays fester Größe in ein Slice ist in Go nicht zulässig. Um das Problem zu lösen, sollten Sie den Slice-Operator ([:]) verwenden, um ein Slice über das vorhandene Array zu erhalten:

var a [32]byte
b := a[:]

Dadurch wird ein Slice (b) erstellt, das auf die Elemente im Array (a) verweist ). Das Slice hat das gleiche Backing-Array wie das Original-Array, seine Länge und Kapazität sind jedoch dynamisch anpassbar.

Weitere Informationen zu den Unterschieden zwischen Arrays und Slices in Go finden Sie in diesem umfassenden Blogbeitrag:

[Arrays und Slices in Go](https://blog.golang.org/go-slices-usage-and-internals)

Das obige ist der detaillierte Inhalt vonWie konvertiere ich in Go ein Array mit fester Größe in ein Slice mit variabler Größe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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