Parola chiave Defer in Golang

In Go, le istruzioni defer ritardano l'esecuzione di una funzione o di un metodo o di un metodo anonimo finché non vengono restituite le funzioni vicine. In altre parole, gli argomenti per rinviare funzioni o metodi vengono valutati immediatamente, ma non vengono eseguiti finché non ritornano le funzioni vicine. È possibile creare un metodo differito, una funzione o una funzione anonima utilizzando la parola chiave defer.

Parola chiave Defer in Golang

Sintassi:

// Hàm
defer func func_name(parameter_list Type)return_type{
// Code
}

// Phương thức
defer func (receiver Type) method_name(parameter_list){
// Code
}

defer func (parameter_list)(return_type){
// code
}()

Nota importante:

  • Nel linguaggio Go sono consentite più istruzioni defer nello stesso programma e vengono eseguite secondo l'ordine LIFO (Last-In, First-Out), come mostrato nell'esempio 2.
  • Nelle istruzioni defer, gli argomenti vengono valutati quando l'istruzione defer viene eseguita, non quando viene chiamata.
  • Le istruzioni defer vengono spesso utilizzate per garantire che i file vengano chiusi quando termina la loro necessità, per chiudere i canali o per individuare problemi nel programma.

Ora vediamo un esempio per capire meglio.

Esempio 1:

// Chương trình Go minh họa
// khái niệm của lệnh defer
package main

import "fmt"

// Các hàm
func mul(a1, a2 int) int {

	res := a1 * a2
	fmt.Println("Result: ", res)
	return 0
}

func show() {
	fmt.Println("Hello!, Quantrimang.com")
}

// Hàm chính
func main() {

	// Gọi hàm mul() 
	// Tại đây hàm mul hoạt động
	// như một hàm bình thường
	mul(23, 45)

	// Gọi hàm mul()
	// Dùng từ khóa defer 
	// Hàm the mul() 
	// là hàm defer
	defer mul(23, 56)

	// Gọi hàm show() 
	show()
}

Risultato:

Result:  1035
Hello!, Quantrimang.com
Result:  1288

Spiegazione: Nell'esempio precedente, abbiamo due funzioni denominate mul() e show() . Mentre la funzione show() viene chiamata normalmente nella funzione main() , la funzione mul() viene chiamata in due modi diversi:

  • Per prima cosa, chiamiamo la funzione mul normalmente (senza la parola chiave defer), ovvero mul(23, 45), che verrà eseguita quando verrà chiamata la funzione (Output: Risultato: 1035).
  • In secondo luogo, chiamiamo la funzione mul() come funzione defer utilizzando la parola chiave defer, ovvero defer mul(23, 56) e viene eseguita (Output: Risultato: 1288) quando tutti i metodi circostanti ritornano.

Esempio 2:

// Minh họa chương trình Go
// dùng nhiều lệnh defer, để minh họa chính sách LIFO 
package main

import "fmt"

// Các hàm
func add(a1, a2 int) int {
	res := a1 + a2
	fmt.Println("Result: ", res)
	return 0
}

// Hàm chính
func main() {

	fmt.Println("Start")

	// Nhiều lệnh defer
	// Triển khai theo thứ tự LIFO 
	defer fmt.Println("End")
	defer add(34, 56)
	defer add(10, 10)
}

Risultato:

Start
Result:  20
Result:  90
End

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.