Slice in Array in Go konvertieren
In Go führt der Versuch, ein Slice direkt einem Array zuzuweisen, zu einem Kompilierungsfehler. Diese Frage untersucht, wie man Slices bestimmter Längen in Arrays umwandelt.
Problemstellung
Stellen Sie sich eine Struktur vor, die einen Lead-Block mit einem Magic-Feld definiert, das aus einem Array von 4 besteht Bytes:
type Lead struct { Magic [4]byte Major, Minor byte Type uint16 Arch uint16 Name string OS uint16 SigType uint16 }
Die Aufgabe besteht darin, dem Magic-Feld wie folgt ein Segment von 4 Bytes zuzuweisen Syntax:
lead := Lead{} lead.Magic = buffer[0:4] // Attempt to assign slice to array
Lösung
Um ein Slice einer bestimmten Länge in ein Array umzuwandeln, bietet Go die folgenden Methoden:
Verwenden von copy() mit Array Subslice
Das integrierte Die Funktion Kopieren kann dazu verleitet werden, ein Slice in ein Array zu kopieren, indem das Array als Slice behandelt wird:
copy(varLead.Magic[:], someSlice[0:4])
Verwendung einer For-Schleife
Iterieren Sie über die Slice-Elemente und weisen Sie sie den Array-Elementen zu:
for index, b := range someSlice { varLead.Magic[index] = b }
Array verwenden Literale
Ein alternativer Ansatz besteht darin, Array-Literale direkt zu verwenden:
type Lead struct { Magic [4]byte Major, Minor byte Type uint16 Arch uint16 Name string OS uint16 SigType uint16 } lead := Lead{Magic: [4]byte{0x12, 0x34, 0x56, 0x78}}
Das obige ist der detaillierte Inhalt vonWie konvertiere ich ein Go-Slice in ein Array?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!