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
Sign up and earn $1000 a day ⋙

Leave a Comment

Differenza tra TV normale e Smart TV

Differenza tra TV normale e Smart TV

Le smart TV hanno davvero preso d'assalto il mondo. Grazie alle sue numerose funzionalità e alla connettività Internet, la tecnologia ha cambiato il nostro modo di guardare la TV.

Perché il congelatore non ha la luce mentre il frigorifero sì?

Perché il congelatore non ha la luce mentre il frigorifero sì?

I frigoriferi sono elettrodomestici comuni nelle case. I frigoriferi hanno solitamente 2 scomparti: lo scomparto freddo è spazioso e ha una luce che si accende automaticamente ogni volta che l'utente lo apre, mentre lo scomparto congelatore è stretto e non ha luce.

2 modi per risolvere la congestione della rete che rallenta il Wi-Fi

2 modi per risolvere la congestione della rete che rallenta il Wi-Fi

Oltre ai router, alla larghezza di banda e alle interferenze, le reti Wi-Fi sono influenzate da molti fattori, ma esistono alcuni modi intelligenti per potenziare la propria rete.

Come eseguire il downgrade da iOS 17 a iOS 16 senza perdere dati utilizzando Tenorshare Reiboot

Come eseguire il downgrade da iOS 17 a iOS 16 senza perdere dati utilizzando Tenorshare Reiboot

Se vuoi tornare alla versione stabile di iOS 16 sul tuo telefono, ecco la guida di base per disinstallare iOS 17 ed effettuare il downgrade da iOS 17 a 16.

Cosa succede al corpo se mangi yogurt ogni giorno?

Cosa succede al corpo se mangi yogurt ogni giorno?

Lo yogurt è un alimento meraviglioso. Fa bene mangiare yogurt tutti i giorni? Se mangiassi yogurt ogni giorno, come cambierebbe il tuo corpo? Scopriamolo insieme!

Quale tipo di riso è migliore per la salute?

Quale tipo di riso è migliore per la salute?

In questo articolo vengono illustrati i tipi di riso più nutrienti e come sfruttare al massimo i benefici per la salute offerti dal tipo di riso scelto.

Come svegliarsi puntuali la mattina

Come svegliarsi puntuali la mattina

Tra le misure che possono aiutarti a dormire meglio e a svegliarti puntuale al mattino c'è quella di stabilire un orario per dormire e una routine per andare a dormire, cambiare la sveglia e modificare la tua dieta.

Suggerimenti per giocare a Rent Please! Simulazione del proprietario di casa per principianti

Suggerimenti per giocare a Rent Please! Simulazione del proprietario di casa per principianti

Affitto per favore! Landlord Sim è un gioco di simulazione per dispositivi mobili, disponibile per iOS e Android. Giocherai nei panni del proprietario di un complesso di appartamenti e inizierai ad affittare un appartamento con l'obiettivo di migliorarne gli interni e prepararli per gli inquilini.

Ultimi codici di difesa della torre del bagno e come inserirli

Ultimi codici di difesa della torre del bagno e come inserirli

Ottieni il codice del gioco Roblox Bathroom Tower Defense e riscattalo per ottenere fantastiche ricompense. Ti aiuteranno a potenziare o sbloccare torri con danni maggiori.

Struttura, simboli e principi di funzionamento dei trasformatori

Struttura, simboli e principi di funzionamento dei trasformatori

Impariamo a conoscere la struttura, i simboli e i principi di funzionamento dei trasformatori nel modo più accurato.

4 modi in cui lintelligenza artificiale sta migliorando le smart TV

4 modi in cui lintelligenza artificiale sta migliorando le smart TV

Dalla migliore qualità dell'immagine e del suono al controllo vocale e molto altro, queste funzionalità basate sull'intelligenza artificiale stanno rendendo le smart TV molto migliori!

Perché ChatGPT è migliore di DeepSeek

Perché ChatGPT è migliore di DeepSeek

Inizialmente le aspettative per DeepSeek erano alte. In quanto chatbot basato sull'intelligenza artificiale, pubblicizzato come un forte concorrente di ChatGPT, promette funzionalità ed esperienze di chat intelligenti.

Scopri Fireflies.ai: la segretaria AI gratuita che ti fa risparmiare ore di lavoro

Scopri Fireflies.ai: la segretaria AI gratuita che ti fa risparmiare ore di lavoro

È facile trascurare dettagli importanti quando si prendono appunti di altre cose essenziali, e cercare di prendere appunti mentre si chiacchiera può distrarre. Fireflies.ai è la soluzione.

Come allevare lAxolotl in Minecraft, addomesticare la Salamandra in Minecraft

Come allevare lAxolotl in Minecraft, addomesticare la Salamandra in Minecraft

Gli Axolot di Minecraft saranno degli ottimi aiutanti per i giocatori che operano sott'acqua, se sapranno come usarli.

A Quiet Place: The Road Ahead Configurazione del gioco per PC

A Quiet Place: The Road Ahead Configurazione del gioco per PC

La configurazione di A Quiet Place: The Road Ahead ha ricevuto recensioni piuttosto positive, quindi è opportuno valutarla attentamente prima di decidere di scaricarla.