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!