Frage

Ich habe diese aber immer noch nicht voll bewusst den Vorteil slice gegen array .so ich jemand erwarten erklärt in SO besser, als es und ich bin sicher, können Sie:)

War es hilfreich?

Lösung

Scheiben haben eine Menge von Anwendungen über Arrays, von denen einige andere Plakate bereits erwähnt.

  • Slices können in vielerlei Hinsicht wie Zeiger funktionieren.
    • Mehrere Scheiben können „Punkt“ auf der gleichen Basis-Array
    • Scheiben wird durch Verweis übergeben, aber da ein Stück selbst ist ein Zeiger es verwendet werden kann „arrays“ um sehr viel effizienter zu passieren, da das gesamte Array nicht kopiert werden muss.
  • Im Gegensatz zu Zeiger bieten Scheiben zusätzliche Puffer Sicherheit
    • Scheibe Unterschreitungen und sprudeln Ausnahmen auslösen, statt zuzulassen, dass Sie eine unsichere Möglichkeit, den Zugriff auf andere Speicherbereiche.
    • Slices können Sie den Zugriff auf nur bestimmte Bereiche eines Arrays. Dies kann sehr nützlich sein, in mit Teilmengen zu arbeiten.
  • Die Länge einer Scheibe dynamisch zur Laufzeit bestimmt wird, im Gegensatz zu Arrays, die bei der Kompilierung ihrer Größe festgelegt haben. Außerdem können Scheiben dynamisch zur Laufzeit geändert werden.

Andere Tipps

In go werden Arrays von Wert übergeben; so, um „als Verweis übergeben“, verwenden Sie ein Stück. Und das ist nicht alles! Zitiert Go Tutorial :

  

Die Größe des Arrays ist Teil seines   Art; jedoch kann man eine Scheibe erklären   Variable, auf die man ein zuweisen   Zeiger auf jeden Array mit dem gleichen   Elementtyp oder-viel häufiger-a   slice Ausdruck der Form a [Min:   high], die die Unteranordnungs   durch Nieder durch High-1 indiziert. Scheiben   sehen aus wie Arrays haben aber keine   explizite Größe ([] gegen [10]), und sie   Referenz ein Segment eines darunterliegenden,   oft anonym, regelmäßige Anordnung.   Mehrere Scheiben können Daten gemeinsam nutzen, wenn sie   repräsentieren Stücke desselben Arrays;   mehrere Arrays können niemals zum Austausch von Daten.

     

Scheiben sind viel häufiger in Go   Programme als regelmäßige Anordnungen; Sie sind   flexibler, haben Referenz   Semantik, und ist effizient. Was   sie fehlen, ist die präzise Steuerung der   Speicherlayout einer regelmäßigen Anordnung; wenn   Sie wollen hundert Elemente haben   ein Array innerhalb Ihrer Struktur gespeichert,   Sie sollten eine regelmäßige Anordnung verwenden.

     

Beim Passieren eines Arrays an eine Funktion,   Sie fast immer wollen, dass die erklären   formale Parameter ein Stück zu sein. Wann   Sie die Funktion aufrufen, nehmen die   Adresse des Arrays und gehen   Erstellen (effizient) eine Scheibe Referenz   und übergeben Sie das.

Ich denke, Scheiben und Arrays sind viel besser beschrieben und ausführlicher in dieser Beitrag auf dem Go-Blog.

Zusätzlich zu den bereits gegebenen Antworten, Scheiben dynamisch dimensioniert werden können, während Arrays kann nicht sein. Das heißt, können Sie nur Konstanten verwenden, um die Größe eines Arrays angeben, während Sie eine Variable verwenden können, um die Größe eines Segments angeben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top