Dans Golang , une fonction est un groupe d'instructions utilisées pour effectuer des tâches, avec une valeur de retour facultative . Go prend en charge deux manières principales de transmettre des arguments : le passage par valeur et le passage par référence. Go utilise le passage par valeur par défaut.

Termes de base pour le passage de paramètres aux fonctions :
- Paramètres réels : les arguments passés à la fonction.
- Paramètres formels : Les paramètres reçus par la fonction.
Par exemple
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)
}
Dans cet exemple, numreste inchangé après l'appel modifycar il est passé par valeur.
Syntaxe
func functionName(param Type) {
// function body # Gọi theo giá trị
}
func functionName(param *Type) {
// function body # Gọi theo tham chiếu
}
Appel par valeur
Dans l'appel par valeur, une copie de la valeur réelle du paramètre est transmise. Les modifications apportées à la fonction n’affectent pas la variable d’origine.
Syntaxe
func functionName(param Type) {
// function body
}
Par exemple:
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)
}
Résultat:
Before, num = 20
After, num = 20
La valeur reste la même, car les changements à l'intérieur modifyn'affectent pas numl'extérieur main.
Arguments de fonction dans Golang
Appel par référence
Dans l'appel par référence, un pointeur vers le paramètre réel est passé, de sorte que toutes les modifications à l'intérieur de la fonction sont reflétées sur la variable d'origine.
Syntaxe
func functionName(param *Type) {
// function body
}
Par exemple:
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)
}
Résultat
Before, num = 20
After, num = 50
Comme numelle est passée par référence, la commande modifyva changer sa valeur, ce qui se reflète dans la commande main.