ในGolangฟังก์ชันคือกลุ่มคำสั่งที่ใช้ในการดำเนินการงานโดยมีค่าส่งคืนที่เป็นทางเลือก Go รองรับสองวิธีหลักในการส่งอาร์กิวเมนต์: ส่งตามค่าและส่งตามการอ้างอิง Go จะใช้ค่า pass by ตามค่าเริ่มต้น

คำศัพท์พื้นฐานในการส่งพารามิเตอร์ไปยังฟังก์ชัน:
- พารามิเตอร์ที่แท้จริง: อาร์กิวเมนต์ที่ส่งผ่านไปยังฟังก์ชัน
- พารามิเตอร์ทางการ: พารามิเตอร์ที่ได้รับจากฟังก์ชัน
ตัวอย่างเช่น
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)
}
ในตัวอย่างนี้numจะยังคงไม่เปลี่ยนแปลงหลังจากการเรียกmodifyเนื่องจากถูกส่งผ่านค่า
ไวยากรณ์
func functionName(param Type) {
// function body # Gọi theo giá trị
}
func functionName(param *Type) {
// function body # Gọi theo tham chiếu
}
เรียกตามค่า
ในการเรียกตามค่า จะมีการส่งต่อสำเนาของค่าพารามิเตอร์จริง การเปลี่ยนแปลงที่ทำในฟังก์ชั่นไม่ส่งผลต่อตัวแปรเดิม
ไวยากรณ์
func functionName(param Type) {
// function body
}
ตัวอย่างเช่น:
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)
}
ผลลัพธ์:
Before, num = 20
After, num = 20
ค่าจะยังคงเท่าเดิม เนื่องจากการเปลี่ยนแปลงภายในmodifyไม่ส่งผลต่อnumภายนอกmain
อาร์กิวเมนต์ฟังก์ชันใน Golang
โทรสอบถามได้ที่
ในการเรียกโดยอ้างอิงนั้น จะมีการส่งตัวชี้ไปยังพารามิเตอร์จริง ดังนั้นการเปลี่ยนแปลงใดๆ ภายในฟังก์ชันจะสะท้อนไปยังตัวแปรดั้งเดิม
ไวยากรณ์
func functionName(param *Type) {
// function body
}
ตัวอย่างเช่น:
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)
}
ผลลัพธ์
Before, num = 20
After, num = 50
เนื่องจากnumถูกส่งผ่านการอ้างอิง คำสั่งmodifyจะเปลี่ยนแปลงค่าซึ่งสะท้อนอยู่ในคำmainสั่ง