W języku Go funkcja to grupa poleceń służących do wykonywania zadań z opcjonalną wartością zwracaną . W języku Go obsługiwane są dwa główne sposoby przekazywania argumentów: przekazywanie przez wartość i przekazywanie przez referencję. Go domyślnie używa przekazywania przez wartość.

Podstawowe pojęcia związane z przekazywaniem parametrów do funkcji:
- Parametry rzeczywiste: Argumenty przekazane do funkcji.
- Parametry formalne: Parametry otrzymane przez funkcję.
Na przykład
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)
}
W tym przykładzie num
pozostaje niezmieniony po wywołaniu, modify
ponieważ jest przekazywany przez wartość.
Składnia
func functionName(param Type) {
// function body # Gọi theo giá trị
}
func functionName(param *Type) {
// function body # Gọi theo tham chiếu
}
Zadzwoń według wartości
W przypadku wywołania według wartości przekazywana jest kopia rzeczywistej wartości parametru. Zmiany wprowadzone w funkcji nie mają wpływu na oryginalną zmienną.
Składnia
func functionName(param Type) {
// function body
}
Na przykład:
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)
}
Wynik:
Before, num = 20
After, num = 20
Wartość pozostaje taka sama, gdyż zmiany wewnątrz modify
nie mają wpływu num
na zewnątrz main
.
Argumenty funkcji w Golangu
Zadzwoń przez odniesienie
W przypadku wywołania przez referencję przekazywany jest wskaźnik do rzeczywistego parametru, więc wszelkie zmiany wewnątrz funkcji są odzwierciedlane w oryginalnej zmiennej.
Składnia
func functionName(param *Type) {
// function body
}
Na przykład:
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)
}
Wynik
Before, num = 20
After, num = 50
Ponieważ num
wartość jest przekazywana przez referencję, polecenie modify
zmieni jej wartość, co zostanie odzwierciedlone w poleceniu main
.