Me

Metodi in Go

3 esercizi

Informazioni su Metodi

Un metodo è una funzione con un argomento speciale: il ricevitore. Il ricevitore compare in un elenco di argomenti tutto suo, tra la parola chiave func e il nome del metodo.

func (receiver type) MethodName(parameters) (returnTypes) {

}

Puoi definire un metodo solo se il tipo del suo ricevitore è definito nello stesso package del metodo.

type Person struct {
	Name string
}

func (p Person) Greetings() string {
	return fmt.Sprintf("Welcome %s!", p.Name)
}

s := Person{Name: "Bronson"}
fmt.Println(s.Greetings())
// Output: Welcome Bronson!

Esistono due tipi di ricevitori: i ricevitori di valore e i ricevitori di puntatore.

I metodi con un ricevitore di valore operano su una copia del valore che ricevono, quindi qualsiasi modifica fatta al ricevitore all'interno del metodo non è visibile a chi chiama.

Puoi dichiarare metodi con ricevitori di puntatore per modificare il valore a cui punta il ricevitore. Tali modifiche sono visibili anche a chi chiama il metodo.

type rect struct {
	width, height int
}

func (r *rect) squareIt() {
	r.height = r.width
}

r := rect{width: 10, height: 20}
fmt.Printf("Width: %d, Height: %d\n", r.width, r.height)
// Output: Width: 10, Height: 20

r.squareIt()
fmt.Printf("Width: %d, Height: %d\n", r.width, r.height)
// Output: Width: 10, Height: 10

Puoi trovare diversi esempi qui. Dai anche un'occhiata a questo breve tutorial sui metodi.

Ricorda: un metodo è solo una funzione con un argomento ricevitore.

Modifica tramite GitHub Il collegamento si apre in una nuova finestra o scheda

Impara Metodi

La pratica è bloccata

Sblocca 2 altri esercizi per esercitarti su Metodi