Đối số hàm trong Golang

Thứ tư - 26/03/2025 23:27

Trong Golang , hàm là nhóm câu lệnh được sử dụng để thực hiện các tác vụ, với giá trị trả về tùy chọn. Go hỗ trợ hai cách chính để truyền đối số: Truyền theo giá trị và Truyền theo tham chiếu. Go mặc định sử dụng truyền theo giá trị.


Đối số hàm trong Golang
    

Các thuật ngữ cơ bản trong truyền tham số cho hàm:

  • Tham số thực tế: Các đối số được truyền cho hàm.
  • Tham số hình thức: Các tham số được hàm nhận.

Ví dụ

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)
}

Trong ví dụ này, num vẫn không thay đổi sau khi gọi modify vì nó được truyền theo giá trị.

Cú pháp

func functionName(param Type) {
    // function body                                        # Gọi theo giá trị
}

func functionName(param *Type) {
    // function body                                       # Gọi theo tham chiếu
}

Gọi theo giá trị

Trong call-by-value, một bản sao của giá trị tham số thực tế được truyền qua. Những thay đổi được thực hiện trong hàm không ảnh hưởng đến biến gốc.

Cú pháp

func functionName(param Type) {
    // function body
}

Ví dụ:

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)
}

Kết quả:

Before, num = 20
After, num = 20

Giá trị vẫn giữ nguyên, vì các thay đổi bên trong modify không ảnh hưởng đến num trong main.

Đối số hàm trong Golang

  • Gọi theo giá trị
  • Gọi theo tham chiếu

Gọi theo tham chiếu

Trong call-by-reference, một con trỏ đến tham số thực tế được truyền, do đó bất kỳ thay đổi nào bên trong hàm đều phản ánh trên biến gốc.

Cú pháp

func functionName(param *Type) {
    // function body
}

Ví dụ:

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)
}

Kết quả

Before, num = 20
After, num = 50

Vì num được truyền theo tham chiếu nên lệnh modify sẽ thay đổi giá trị của nó, điều này được phản ánh trong lệnh main.

 

Nguồn tin: Quantrimang.com:

Tổng số điểm của bài viết là: 0 trong 0 đánh giá

  Ý kiến bạn đọc

THỐNG KÊ TRUY CẬP
  • Đang truy cập24
  • Máy chủ tìm kiếm3
  • Khách viếng thăm21
  • Hôm nay10,524
  • Tháng hiện tại33,523
  • Tổng lượt truy cập11,819,910
QUẢNG CÁO
Phan Thanh Phú
Quảng cáo 2
Liên kết site
Đăng nhập Thành viên
Hãy đăng nhập thành viên để trải nghiệm đầy đủ các tiện ích trên site
Thăm dò ý kiến

Bạn thấy Website cần cải tiến những gì?

Lịch Âm dương
Máy tính
Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây