Saltar al contenido principal
eLearner.app
Módulo 3 · Lección 1 de 511/50 en el curso~10 min
Lecciones del módulo (1/5)

Firma e parametri

In Go le funzioni si dichiarano con func. La sintassi della firma è diversa da C/Java: il tipo va dopo il nome del parametro, separato da uno spazio. È una scelta che si legge meglio a voce alta — "n di tipo int" invece di "int n".

Sintassi base

Go
func sum(a int, b int) int {
    return a + b
}

func greet(name string) {
    fmt.Println("ciao", name)
}

Una funzione senza valore di ritorno semplicemente omette il tipo di ritorno.

Parametri consecutivi dello stesso tipo

Se più parametri consecutivi hanno lo stesso tipo, puoi dichiararlo una sola volta sull'ultimo. È idiomatico e si vede ovunque:

Go
func sum(a, b int) int { return a + b }
func max3(a, b, c float64) float64 { /* ... */ }
func parse(s, sep string, limit int) []string { /* ... */ }

Funzioni esportate vs non esportate

In Go la visibilità è determinata dal nome: identificatori che iniziano con lettera maiuscola sono esportati (visibili da altri package), gli altri sono privati al package.

Go
func Sum(a, b int) int { ... }    // esportata
func helper() { ... }              // privata al package

Funzioni come valori

Le funzioni sono first-class values: puoi assegnarle, passarle e ritornarle. Approfondiremo nella lezione sulle closure.

Go
op := sum            // op ha tipo func(int, int) int
fmt.Println(op(2, 3)) // 5

main e init: due nomi speciali

  • func main() è il punto di ingresso del package main. Niente argomenti, niente ritorni.
  • func init() viene chiamato automaticamente all'avvio del package (anche più volte se più file lo definiscono). Utile per setup; usalo con parsimonia.

Prova tu

Ejercicio#go.m3.l1.e1
Intentos: 0Cargando...

Definisci una funzione sum(a, b int) int che ritorna a+b, poi chiamala in main con (3, 4).

Cargando editor...
Mostrar pista

Tipo condiviso: `(a, b int)`. Tipo di ritorno DOPO le parentesi.

Solución disponible después de 3 intentos

Ejercicio#go.m3.l1.e2
Intentos: 0Cargando...

Definisci greet(name string) (nessun valore di ritorno) che stampa 'ciao <name>'.

Cargando editor...
Mostrar pista

Niente tipo di ritorno se la funzione non ritorna nulla.

Solución disponible después de 3 intentos

Cuestionario#go.m3.l1.e3
Listo

Dove va il tipo dei parametri in Go?

Go
func f(? ?) {}
Opciones de respuesta

Recap

  • func nome(param tipo, ...) tipoDiRitorno { ... }.
  • Tipo dopo il nome; parametri consecutivi stesso tipo → dichiaralo una sola volta.
  • Iniziale maiuscola = esportata; minuscola = privata al package.
  • Le funzioni sono first-class (assegnabili, passabili).
  • main e init sono nomi riservati con semantica speciale.