In Golang , una funzione è un gruppo di istruzioni utilizzate per eseguire attività, con un valore di ritorno facoltativo . Go supporta due metodi principali per passare argomenti: passaggio per valore e passaggio per riferimento. Di default, Go utilizza il passaggio per valore.

Termini base nel passaggio di parametri alle funzioni:
- Parametri effettivi: gli argomenti passati alla funzione.
- Parametri formali: parametri ricevuti dalla funzione.
Per esempio
package main
import "fmt"
// Cố gắng sửa đổi giá trị của num
func modify(num int) {
num = 50
}
func main() {
num := 20
fmt.Printf("Before, num = %d\n", num)
modify(num)
fmt.Printf("After, num = %d\n", num)
}
In questo esempio, numrimane invariato dopo la chiamata modifyperché viene passato per valore.
Sintassi
func functionName(param Type) {
// function body # Gọi theo giá trị
}
func functionName(param *Type) {
// function body # Gọi theo tham chiếu
}
Chiama per valore
Nella chiamata per valore viene passata una copia del valore effettivo del parametro. Le modifiche apportate alla funzione non influiscono sulla variabile originale.
Sintassi
func functionName(param Type) {
// function body
}
Per esempio:
package main
import "fmt"
// Chỉnh sửa giá trị của num
func modify(num int) {
num = 50
}
func main() {
num := 20
fmt.Printf("Before, num = %d\n", num)
modify(num)
fmt.Printf("After, num = %d\n", num)
}
Risultato:
Before, num = 20
After, num = 20
Il valore rimane lo stesso, poiché i cambiamenti interni modifynon influiscono numsull'esterno main.
Argomenti delle funzioni in Golang
Chiamata per riferimento
Nella chiamata per riferimento, viene passato un puntatore al parametro effettivo, quindi tutte le modifiche all'interno della funzione si riflettono sulla variabile originale.
Sintassi
func functionName(param *Type) {
// function body
}
Per esempio:
package main
import "fmt"
// Chỉnh sửa giá trị của num qua tham chiếu
func modify(num *int) {
*num = 50
}
func main() {
num := 20
fmt.Printf("Before, num = %d\n", num)
modify(&num)
fmt.Printf("After, num = %d\n", num)
}
Risultato
Before, num = 20
After, num = 50
Poiché numviene passato per riferimento, il comando modifycambierà il suo valore, il che si riflette nel comando main.