Sobes.tech
Junior — Middle

Wie erstellt und initialisiert man Slices in Go richtig?

sobes.tech KI

Antwort von AI

In Go sind Slices dynamische Datenstrukturen, die eine Referenz auf ein Array mit einer angegebenen Länge und Kapazität darstellen.

Slices können auf verschiedene Weisen erstellt und initialisiert werden:

  1. Deklaration eines Slices ohne Initialisierung (nil-Slice):
var s []int // nil-Slice, Länge und Kapazität 0
  1. Initialisierung eines Slices mit einem Literal:
s := []int{1, 2, 3} // Slice mit Länge 3
  1. Erstellung eines Slices mit der Funktion make:
s := make([]int, 5) // Slice mit Länge 5, gefüllt mit Nullen
s2 := make([]int, 3, 10) // Länge 3, Kapazität 10

Die Funktion make reserviert im Hintergrund ein Array und gibt einen Slice zurück, der darauf zeigt.

  1. Erstellung eines Slices aus einem Array:
arr := [5]int{1, 2, 3, 4, 5}
s := arr[1:4] // Slice der Elemente mit Indizes 1,2,3

Es ist wichtig zu beachten, dass Slices Referenzen auf Arrays sind, daher führt eine Änderung der Elemente im Slice auch zu einer Änderung des ursprünglichen Arrays.

Beispiel für die Verwendung:

package main
import "fmt"

func main() {
    s := make([]int, 3, 5)
    fmt.Println(s)       // [0 0 0]
    fmt.Println(len(s))  // 3
    fmt.Println(cap(s))  // 5

    s = append(s, 4, 5)
    fmt.Println(s)       // [0 0 0 4 5]
    fmt.Println(len(s))  // 5
    fmt.Println(cap(s))  // 5
}

Dieser Ansatz ermöglicht eine effiziente Arbeit mit dynamischen Arrays in Go.