În Golang , o funcție este un grup de instrucțiuni utilizate pentru a efectua sarcini, cu o valoare returnată opțională . Go acceptă două moduri principale de a transmite argumente: Treci după valoare și Treci prin referință. Go folosește trecerea prin valoare în mod implicit.

Termeni de bază în transmiterea parametrilor la funcții:
- Parametri actuali: Argumentele transmise funcției.
- Parametri formali: Parametrii primiți de funcție.
De exemplu
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)
}
În acest exemplu, numrămâne neschimbat după apel, modifydeoarece este transmis după valoare.
Sintaxă
func functionName(param Type) {
// function body # Gọi theo giá trị
}
func functionName(param *Type) {
// function body # Gọi theo tham chiếu
}
Apel după valoare
În apelul după valoare, se transmite o copie a valorii reale a parametrului. Modificările efectuate în funcție nu afectează variabila inițială.
Sintaxă
func functionName(param Type) {
// function body
}
De exemplu:
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)
}
Rezultat:
Before, num = 20
After, num = 20
Valoarea rămâne aceeași, deoarece modificările din interior modifynu afectează numexteriorul main.
Argumente ale funcției în Golang
Sunați prin referință
În apelul prin referință, este transmis un pointer către parametrul real, astfel încât orice modificări din interiorul funcției se reflectă asupra variabilei inițiale.
Sintaxă
func functionName(param *Type) {
// function body
}
De exemplu:
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)
}
Rezultat
Before, num = 20
After, num = 50
Deoarece numeste transmisă prin referință, comanda modifyîși va schimba valoarea, care se reflectă în comanda main.