Hàm trả về nhiều giá trị trong Golang

Trong ngôn ngữ Golang, bạn được phép trả về nhiều giá trị từ một hàm, sử dụng câu lệnh return. Hay nói cách khác, trong hàm, một câu lệnh return có thể trả về nhiều giá trị. Kiểu của các giá trị trả về tương tự như kiểu của tham số được xác định trong danh sách tham số.

Hàm trả về nhiều giá trị trong Golang

Cú pháp:

func function_name(parameter_list)(return_type_list){
     // code...
}

Trong đó:

  • function_name: Đây là tên của hàm.
  • parameter-list: Chứa tên và kiểu của các tham số hàm.
  • return_type_list: Tùy chọn và chứa các kiểu giá trị mà hàm trả về. Nếu bạn đang sử dụng return_type trong hàm của mình, thì cần phải sử dụng câu lệnh return trong hàm của bạn.

Ví dụ:

// Chương trình Go minh họa
// cách hàm trả về nhiều giá trị
package main 

import "fmt"

// myfunc trả về 3 giá trị của kiểu int
func myfunc(p, q int)(int, int, int ){ 
	return p - q, p * q, p + q 
} 

// Phương thức chính
func main() { 
	
	// Giá trị trả về được gắn vào
	// 3 biến khác nhau
var myvar1, myvar2, myvar3 = myfunc(4, 2) 
	
// Hiện giá trị
fmt.Printf("Result is: %d", myvar1 ) 
fmt.Printf("\nResult is: %d", myvar2) 
fmt.Printf("\nResult is: %d", myvar3) 
} 

Kết quả:

Result is: 2
Result is: 8
Result is: 6

Đặt tên cho giá trị trả về

Trong ngôn ngữ Go, bạn được phép cung cấp tên cho các giá trị trả về. Và bạn cũng có thể sử dụng các tên biến đó trong mã của mình. Không cần phải viết các tên này với câu lệnh return vì trình biên dịch Go sẽ tự động hiểu rằng phải giữ lại các biến này. Và loại trả về được gọi là trả về tối thiểu. Trả về tối thiểu làm giảm sự trùng lặp trong chương trình của bạn.

Cú pháp:

func function_name(para1, para2 int)(name1 int, name2 int){
    // code...
}

hoặc

func function_name(para1, para2 int)(name1, name2 int){
   // code...
}

Tại đây, name1name2 là tên của giá trị trả về và para1para2 là các tham số của hàm.

Ví dụ:

// Minh họa chương trình Go
// cách đặt tên cho giá trị trả về
package main 

import "fmt"

// myfunc trả về 2 giá trị của kiểu int 
// đây là tên giá trị trả về:
// rectangle và square
func myfunc(p, q int)( rectangle int, square int ){ 
	rectangle = p*q 
	square = p*p 
	return
} 

func main() { 
	
	// Giá trị trả về được gán cho 
	// hai biến khác nhau
var area1, area2 = myfunc(2, 4) 
	
// Hiện giá trị
fmt.Printf("Area of the rectangle is: %d", area1 ) 
fmt.Printf("\nArea of the square is: %d", area2) 
	
} 

Kết quả:

Area of the rectangle is: 8
Area of the square is: 4
Thứ Sáu, 28/03/2025 11:55
4,52 👨 78
Xác thực tài khoản!

Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:

Số điện thoại chưa đúng định dạng!
Số điện thoại này đã được xác thực!
Bạn có thể dùng Sđt này đăng nhập tại đây!
Lỗi gửi SMS, liên hệ Admin
0 Bình luận
Sắp xếp theo
❖
    Chia sẻ
    Chia sẻ FacebookChia sẻ Twitter
    Đóng