Dalam Golang , fungsi ialah sekumpulan pernyataan yang digunakan untuk melaksanakan tugasan, dengan nilai pulangan pilihan . Go menyokong dua cara utama untuk meluluskan hujah: Lulus dengan nilai dan Lulus dengan rujukan. Go menggunakan nilai pas secara lalai.

Istilah asas dalam menghantar parameter kepada fungsi:
- Parameter sebenar: Argumen dihantar ke fungsi.
- Parameter formal: Parameter yang diterima oleh fungsi.
Contohnya
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)
}
Dalam contoh ini, numkekal tidak berubah selepas panggilan modifykerana ia diluluskan oleh nilai.
Sintaks
func functionName(param Type) {
// function body # Gọi theo giá trị
}
func functionName(param *Type) {
// function body # Gọi theo tham chiếu
}
Panggilan mengikut nilai
Dalam nilai panggilan demi, salinan nilai parameter sebenar diluluskan. Perubahan yang dibuat dalam fungsi tidak menjejaskan pembolehubah asal.
Sintaks
func functionName(param Type) {
// function body
}
Contohnya:
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)
}
Keputusan:
Before, num = 20
After, num = 20
Nilainya tetap sama, kerana perubahan di dalam modifytidak menjejaskan numbahagian luar main.
Hujah fungsi di Golang
Panggil dengan rujukan
Dalam panggilan demi rujukan, penunjuk kepada parameter sebenar diluluskan, jadi sebarang perubahan di dalam fungsi ditunjukkan pada pembolehubah asal.
Sintaks
func functionName(param *Type) {
// function body
}
Contohnya:
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)
}
Hasilnya
Before, num = 20
After, num = 50
Oleh kerana numia diluluskan melalui rujukan, arahan modifyakan menukar nilainya, yang ditunjukkan dalam arahan main.