Les funcions són blocs de codi que realitzen una tasca específica i poden ser reutilitzats en diferents parts del programa. En Go, les funcions són elements fonamentals que permeten estructurar el codi de manera modular i clara.

Continguts

Definició de Funcions

Una funció en Go es defineix amb la paraula clau func, seguida del nom de la funció, els paràmetres entre parèntesis i el tipus de valor de retorn (si n'hi ha). El cos de la funció es troba entre claus {}.

Exemple

package main

import "fmt"

// Definició d'una funció simple que no rep paràmetres ni retorna valors
func saluda() {
    fmt.Println("Hola, món!")
}

func main() {
    saluda() // Crida a la funció
}

Explicació

  • func saluda() { ... }: Defineix una funció anomenada saluda que no rep paràmetres ni retorna valors.
  • fmt.Println("Hola, món!"): Imprimeix "Hola, món!" a la consola.
  • saluda(): Crida a la funció saluda.

Paràmetres i Valors de Retorn

Les funcions poden rebre paràmetres i retornar valors. Els paràmetres es defineixen dins dels parèntesis després del nom de la funció, i els tipus de retorn es defineixen després dels parèntesis de paràmetres.

Exemple

package main

import "fmt"

// Funció que rep dos enters com a paràmetres i retorna la seva suma
func suma(a int, b int) int {
    return a + b
}

func main() {
    resultat := suma(3, 4) // Crida a la funció amb els valors 3 i 4
    fmt.Println("La suma és:", resultat)
}

Explicació

  • func suma(a int, b int) int { ... }: Defineix una funció anomenada suma que rep dos enters (a i b) i retorna un enter.
  • return a + b: Retorna la suma dels paràmetres a i b.
  • resultat := suma(3, 4): Crida a la funció suma amb els valors 3 i 4, i emmagatzema el resultat en la variable resultat.

Funcions Anònimes i Funcions com a Valors

Les funcions en Go poden ser anònimes (sense nom) i assignades a variables. També poden ser passades com a arguments a altres funcions.

Exemple

package main

import "fmt"

func main() {
    // Funció anònima assignada a una variable
    saluda := func(nom string) {
        fmt.Println("Hola,", nom)
    }

    saluda("Anna") // Crida a la funció anònima

    // Funció que rep una altra funció com a paràmetre
    executa := func(f func(string), valor string) {
        f(valor)
    }

    executa(saluda, "Joan") // Passa la funció `saluda` com a argument
}

Explicació

  • saluda := func(nom string) { ... }: Defineix una funció anònima que rep un string i l'assigna a la variable saluda.
  • executa := func(f func(string), valor string) { ... }: Defineix una funció que rep una funció i un string com a paràmetres.
  • executa(saluda, "Joan"): Passa la funció saluda i el valor "Joan" a la funció executa.

Funcions Variàdiques

Les funcions variàdiques poden rebre un nombre variable d'arguments. Es defineixen utilitzant ... abans del tipus de paràmetre.

Exemple

package main

import "fmt"

// Funció variàdica que rep un nombre variable d'enters
func suma(nums ...int) int {
    total := 0
    for _, num := range nums {
        total += num
    }
    return total
}

func main() {
    fmt.Println(suma(1, 2, 3)) // Crida a la funció amb tres arguments
    fmt.Println(suma(4, 5, 6, 7, 8)) // Crida a la funció amb cinc arguments
}

Explicació

  • func suma(nums ...int) int { ... }: Defineix una funció variàdica que rep un nombre variable d'enters.
  • for _, num := range nums { ... }: Itera sobre cada enter en nums.
  • total += num: Afegeix cada enter al total.

Exercicis Pràctics

Exercici 1: Funció de Multiplicació

Escriu una funció anomenada multiplica que rebi dos enters i retorni el seu producte.

Solució

package main

import "fmt"

func multiplica(a int, b int) int {
    return a * b
}

func main() {
    fmt.Println(multiplica(3, 4)) // Ha de retornar 12
}

Exercici 2: Funció Variàdica de Concatenació

Escriu una funció variàdica anomenada concatena que rebi un nombre variable de strings i els concateni en un sol string.

Solució

package main

import "fmt"

func concatena(strs ...string) string {
    resultat := ""
    for _, str := range strs {
        resultat += str
    }
    return resultat
}

func main() {
    fmt.Println(concatena("Hola", " ", "món", "!")) // Ha de retornar "Hola món!"
}

Conclusió

En aquesta secció, hem après com definir i utilitzar funcions en Go, incloent-hi funcions amb paràmetres, valors de retorn, funcions anònimes, funcions com a valors i funcions variàdiques. Les funcions són una eina poderosa per organitzar i reutilitzar el codi, i són essencials per escriure programes clars i eficients. En el següent mòdul, explorarem les estructures de dades avançades en Go.

© Copyright 2024. Tots els drets reservats