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ố.
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, name1 và name2 là tên của giá trị trả về và para1 và para2 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