Heim > Backend-Entwicklung > Golang > Wie konvertiere ich ein Go-Slice in ein Array?

Wie konvertiere ich ein Go-Slice in ein Array?

Linda Hamilton
Freigeben: 2024-12-11 12:43:11
Original
478 Leute haben es durchsucht

How to Convert a Go Slice to an Array?

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

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

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

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

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

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!

Quelle:php.cn
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage