Metodi in Golang

I metodi in Golang  sono come le funzioni, ma con una differenza sostanziale: hanno un argomento receiver , che consente l'accesso alle proprietà del receiver . Il ricevitore può essere di tipo struct o non-struct, ma entrambi devono trovarsi nello stesso pacchetto. Non è possibile creare metodi per i tipi definiti in altri pacchetti, inclusi i tipi incorporati come int o string ; In caso contrario, il compilatore segnalerà un errore.

Metodi in Golang

Per esempio:

package main

import "fmt"

// Định nghĩa một struct
type person struct {
    name string
    age  int
}

// Định nghĩa một phương thức với struct receiver
func (p person) display() {
    fmt.Println("Name:", p.name)
    fmt.Println("Age:", p.age)
}

func main() {
    // Tạo một phiên bản của struct
    a := person{name: "a", age: 25}
    
    // Gọi phương thức
    a.display()
}

Risultato:

Name: a
Age: 25

Sintassi

func(receiver_name Type)  method_name(parameter_list) (return_type) { 
// Code
}

Ricevitore: è possibile accedervi utilizzando questo metodo.

Metodo con ricevitore di tipo struct

In Go è possibile definire un metodo in cui il ricevitore è di tipo struct. Il ricevitore è accessibile all'interno del metodo. L'esempio precedente illustra questo approccio con un Receiver di tipo struct.

Il metodo con Receiver non è di tipo struct

Go consente anche ai metodi di avere ricevitori non-struct, a condizione che il tipo di ricevitore e la definizione del metodo siano nello stesso pacchetto. Non è possibile definire un metodo con un tipo di ricevitore di un altro pacchetto (ad esempio int, string).

Per esempio:

package main

import "fmt"

// Tạo một kiểu tùy biến dựa trên int
type number int

// Định nghĩa một phương thức với receiver không phải struct
func (n number) square() number {
    return n * n
}

func main() {
    a := number(4)
    b := a.square()

    fmt.Println("Square of", a, "is", b)
}

Risultato:

Square of 4 is 16

Metodo con puntatore del ricevitore

In Go, i metodi possono avere ricevitori di puntatori. Ciò consente che le modifiche apportate al metodo vengano riflesse nel chiamante, cosa che non è possibile con i ricevitori di valori.

Sintassi:

func (p *Type) method_name(...Type) Type {    // Code}

Per esempio:

package main

import "fmt"

// Defining a struct
type person struct {
    name string
}

// Phương thức với receiver pointer để chỉnh sửa dữ liệu
func (p *person) changeName(newName string) {
    p.name = newName
}

func main() {
    a := person{name: "a"}
    
    fmt.Println("Before:", a.name)
    
    // Gọi phương thức này để thay đổi tên
    a.changeName("b")
    
    fmt.Println("After:", a.name)
}

Risultato:

Before: a
After: b

Il metodo accetta sia il puntatore che il valore

A differenza delle funzioni, i metodi Go possono accettare sia ricevitori di valori che di puntatori. È possibile passare puntatori o valori e il metodo li gestirà di conseguenza.

Per esempio:

package main
import "fmt"

type person struct {
    name string
}
// Phương thức với receiver pointer
func (p *person) updateName(newName string) {
    p.name = newName
}

// Phương thức với receiver value 
func (p person) showName() {
    fmt.Println("Name:", p.name)
}

func main() {
    a := person{name: "a"}
    
    // Gọi phương thức con trỏ cùng giá trị
    a.updateName("b")
    fmt.Println("After pointer method:", a.name)
    
    // Gọi phương thức giá trị với con trỏ
    (&a).showName()
}

Risultato:

After pointer method: b
Name: b

Differenza tra metodo e funzione

Metodo Mascella
Contiene un ricevitore Non contiene il ricevitore
È possibile definire metodi con lo stesso nome ma tipi diversi. Non sono consentite funzioni con lo stesso nome ma tipi diversi.
Non può essere usato come superlativo Possono essere usati come oggetti superordinati

Lascia un commento

Come smaltire una power bank a Bari: RAEE, ritiro e sicurezza

Come smaltire una power bank a Bari: RAEE, ritiro e sicurezza

Scopri come smaltire una power bank a Bari: riconosci i rischi, prepara il dispositivo e scegli centri AMIU o ritiro a domicilio.

Come smaltire un computer a Perugia: RAEE, centri e ritiro a domicilio

Come smaltire un computer a Perugia: RAEE, centri e ritiro a domicilio

Scopri come smaltire un computer a Perugia: cancella i dati, scegli il Centro di Raccolta Gesenu o prenota il ritiro RAEE a domicilio.

Come smaltire un materasso a Roma: centri AMA e ritiro a domicilio

Come smaltire un materasso a Roma: centri AMA e ritiro a domicilio

Scopri come smaltire un materasso a Roma: centri AMA, ritiro a domicilio, limiti, prenotazione, trasporto e controlli finali.

Come smaltire una power bank gonfia a Taranto in sicurezza

Come smaltire una power bank gonfia a Taranto in sicurezza

Power bank gonfia a Taranto: cosa fare subito, quando non trasportarla e dove verificare il conferimento tra CCR, RAEE e raccolta batterie.

Come smaltire una batteria al litio a Rimini: confronto tra le opzioni

Come smaltire una batteria al litio a Rimini: confronto tra le opzioni

Dove portare una batteria al litio a Rimini? Confronta negozio, stazione ecologica e filiera specializzata in base a sicurezza, comodità e tipo di batteria.

Come smaltire un televisore a Perugia: guida pratica a RAEE, ritiro e consegna

Come smaltire un televisore a Perugia: guida pratica a RAEE, ritiro e consegna

Come smaltire un televisore a Perugia: scopri centro di raccolta, ritiro del vecchio TV in negozio, preparazione, trasporto e errori da evitare.

Bonus nido 2026: come presentare la domanda INPS passo dopo passo

Bonus nido 2026: come presentare la domanda INPS passo dopo passo

Bonus nido 2026: requisiti, importi, documenti e procedura INPS per presentare la domanda, scegliere le mensilità e caricare le ricevute.

TARI: chi deve pagarla? Le regole per proprietari e inquilini

TARI: chi deve pagarla? Le regole per proprietari e inquilini

La TARI spetta di norma a chi occupa l’immobile. Scopri cosa cambia per affitti, locazioni brevi, case vuote e abitazioni condivise.

Come smaltire bombolette spray a Prato: cosa fare in base a contenuto e pressione

Come smaltire bombolette spray a Prato: cosa fare in base a contenuto e pressione

Come smaltire bombolette spray a Prato senza errori: differenza tra contenitore vuoto, con residui o ancora pressurizzato, Ecocentro e raccolta Alia.

Bombolette spray a Verona: dove portarle e come evitare errori

Bombolette spray a Verona: dove portarle e come evitare errori

Scopri come smaltire le bombolette spray a Verona: differenze tra contenitori vuoti e pericolosi, indirizzi degli Ecocentri AMIA e calendario Ecomobile.