En aquest tema, explorarem dues estructures de dades fonamentals en Go: els arrays i els slices. Aquests conceptes són essencials per a la manipulació de col·leccions de dades i són àmpliament utilitzats en la programació diària.

Arrays

Què és un Array?

Un array és una col·lecció d'elements del mateix tipus, amb una mida fixa. Els elements d'un array es poden accedir mitjançant un índex, que comença en 0.

Declaració d'Arrays

Per declarar un array en Go, es pot utilitzar la següent sintaxi:

var nomArray [mida]tipus

Exemple:

var numeros [5]int

Això declara un array anomenat numeros que pot contenir 5 enters.

Inicialització d'Arrays

Els arrays es poden inicialitzar en el moment de la seva declaració:

var numeros = [5]int{1, 2, 3, 4, 5}

També es pot ometre la mida i deixar que Go la dedueixi:

numeros := [...]int{1, 2, 3, 4, 5}

Accés i Modificació d'Elements

Els elements d'un array es poden accedir i modificar utilitzant l'índex:

fmt.Println(numeros[0]) // Imprimeix 1
numeros[1] = 10
fmt.Println(numeros[1]) // Imprimeix 10

Iteració sobre Arrays

Es pot utilitzar un bucle for per iterar sobre els elements d'un array:

for i := 0; i < len(numeros); i++ {
    fmt.Println(numeros[i])
}

També es pot utilitzar el bucle for range:

for i, v := range numeros {
    fmt.Printf("Índex: %d, Valor: %d\n", i, v)
}

Slices

Què és un Slice?

Un slice és una vista dinàmica sobre un array. A diferència dels arrays, els slices poden canviar de mida. Els slices són molt més flexibles i s'utilitzen més freqüentment que els arrays en Go.

Declaració de Slices

Els slices es poden declarar de diverses maneres:

var noms []string

Exemple:

noms := []string{"Anna", "Bernat", "Carla"}

Creació de Slices amb make

Es pot utilitzar la funció make per crear un slice amb una mida inicial i una capacitat opcional:

nombres := make([]int, 5, 10)

Això crea un slice de 5 elements amb una capacitat de 10.

Accés i Modificació d'Elements

Els elements d'un slice es poden accedir i modificar de la mateixa manera que els arrays:

fmt.Println(noms[0]) // Imprimeix "Anna"
noms[1] = "Berta"
fmt.Println(noms[1]) // Imprimeix "Berta"

Append

La funció append s'utilitza per afegir elements a un slice:

noms = append(noms, "David")
fmt.Println(noms) // Imprimeix ["Anna", "Berta", "Carla", "David"]

Sub-slices

Es poden crear sub-slices a partir d'un slice existent:

subNoms := noms[1:3]
fmt.Println(subNoms) // Imprimeix ["Berta", "Carla"]

Iteració sobre Slices

La iteració sobre slices es fa de la mateixa manera que amb els arrays:

for i, v := range noms {
    fmt.Printf("Índex: %d, Valor: %s\n", i, v)
}

Exercicis Pràctics

Exercici 1: Declaració i Inicialització d'Arrays

  1. Declara un array de 3 elements de tipus float64 anomenat preus.
  2. Inicialitza l'array amb els valors 19.99, 25.50 i 9.75.
  3. Imprimeix tots els elements de l'array.

Solució:

package main

import "fmt"

func main() {
    var preus = [3]float64{19.99, 25.50, 9.75}
    for i := 0; i < len(preus); i++ {
        fmt.Println(preus[i])
    }
}

Exercici 2: Manipulació de Slices

  1. Declara un slice de strings anomenat colors amb els valors "vermell", "verd" i "blau".
  2. Afegeix el color "groc" al slice.
  3. Crea un sub-slice que contingui els dos primers elements de colors.
  4. Imprimeix el sub-slice.

Solució:

package main

import "fmt"

func main() {
    colors := []string{"vermell", "verd", "blau"}
    colors = append(colors, "groc")
    subColors := colors[:2]
    fmt.Println(subColors)
}

Conclusió

En aquesta secció, hem après sobre els arrays i els slices en Go. Els arrays són col·leccions de mida fixa, mentre que els slices són més flexibles i poden canviar de mida. Hem vist com declarar, inicialitzar, accedir i modificar elements en arrays i slices, així com com iterar sobre ells. També hem practicat aquests conceptes amb exercicis pràctics. En el proper tema, explorarem els maps, una altra estructura de dades important en Go.

© Copyright 2024. Tots els drets reservats