In Golang is een functie een groep statements die gebruikt worden om taken uit te voeren, met een optionele retourwaarde . Go ondersteunt twee hoofdmanieren om argumenten door te geven: doorgeven per waarde en doorgeven per referentie. Go gebruikt standaard de waarde 'pass by'.

Basisbegrippen bij het doorgeven van parameters aan functies:
- Werkelijke parameters: De argumenten die aan de functie worden doorgegeven.
- Formele parameters: De parameters die de functie ontvangt.
Bijvoorbeeld
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 dit voorbeeld numblijft dit ongewijzigd na de aanroep , modifyomdat het op waarde wordt doorgegeven.
Syntaxis
func functionName(param Type) {
// function body # Gọi theo giá trị
}
func functionName(param *Type) {
// function body # Gọi theo tham chiếu
}
Oproep op waarde
Bij call-by-value wordt een kopie van de werkelijke parameterwaarde doorgegeven. Wijzigingen die in de functie worden aangebracht, hebben geen invloed op de oorspronkelijke variabele.
Syntaxis
func functionName(param Type) {
// function body
}
Bijvoorbeeld:
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)
}
Resultaat:
Before, num = 20
After, num = 20
De waarde blijft hetzelfde, aangezien veranderingen aan de binnenkant modifygeen invloed hebben op numde buitenkant main.
Functieargumenten in Golang
Oproep via referentie
Bij call-by-reference wordt een aanwijzer naar de werkelijke parameter doorgegeven, zodat eventuele wijzigingen binnen de functie worden doorgevoerd in de oorspronkelijke variabele.
Syntaxis
func functionName(param *Type) {
// function body
}
Bijvoorbeeld:
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)
}
Resultaat
Before, num = 20
After, num = 50
Omdat numhet via referentie wordt doorgegeven, modifyzal de opdracht zijn waarde veranderen, wat wordt weerspiegeld in de opdracht main.