Golang'da bir fonksiyon, isteğe bağlı bir dönüş değeri olan görevleri gerçekleştirmek için kullanılan bir grup ifadedir . Go, argümanları geçirmenin iki ana yolunu destekler: Değere göre geçirme ve Referansa göre geçirme. Go varsayılan olarak pass by value'yu kullanır.

Fonksiyonlara parametre geçirmede temel terimler:
- Gerçek parametreler: Fonksiyona geçirilen argümanlar.
- Resmi parametreler: Fonksiyonun aldığı parametreler.
Örneğin
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)
}
Bu örnekte, değer olarak geçirildiği için numçağrıdan sonra değişmeden kalır .modify
Sözdizimi
func functionName(param Type) {
// function body # Gọi theo giá trị
}
func functionName(param *Type) {
// function body # Gọi theo tham chiếu
}
Değere göre çağrı
Değere göre çağırmada gerçek parametre değerinin bir kopyası geçirilir. Fonksiyonda yapılan değişiklikler orijinal değişkeni etkilemez.
Sözdizimi
func functionName(param Type) {
// function body
}
Örneğin:
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)
}
Sonuç:
Before, num = 20
After, num = 20
İçerideki değişiklikler dışarıyı modifyetkilemediği için değer aynı kalır .nummain
Golang'da fonksiyon argümanları
Referansla çağrı
Referansla çağırmada, gerçek parametreye bir işaretçi geçirilir, böylece fonksiyon içindeki herhangi bir değişiklik orijinal değişkene yansıtılır.
Sözdizimi
func functionName(param *Type) {
// function body
}
Örneğin:
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)
}
Sonuç
Before, num = 20
After, num = 50
numReferansla geçildiği için komut modifydeğerini değiştirecek ve bu da komutta yansıtılacaktır main.