Có, trong Go, bạn có thể trả về nhiều giá trị từ một hàm. Đây là một tính năng đặc biệt của ngôn ngữ này, cho phép hàm trả về không chỉ một mà nhiều giá trị cùng một lúc. Điều này rất hữu ích khi bạn muốn trả về nhiều thông tin liên quan từ một hàm mà không cần sử dụng cấu trúc dữ liệu phức tạp như struct hay slice.
Để trả về nhiều giá trị, bạn chỉ cần định nghĩa các giá trị trả về trong phần định nghĩa hàm, cách nhau bằng dấu phẩy. Dưới đây là một số ví dụ để minh họa cách làm việc này.
package main import ( "fmt" ) // Hàm trả về hai giá trị: tổng và hiệu func calculate(a int, b int) (int, int) { sum := a + b diff := a - b return sum, diff } func main() { total, difference := calculate(10, 5) // Gọi hàm và nhận các giá trị trả về fmt.Println("Tổng:", total) // Kết quả: Tổng: 15 fmt.Println("Hiệu:", difference) // Kết quả: Hiệu: 5 }
calculate
nhận hai tham số và trả về hai giá trị: tổng và hiệu của chúng.total
và difference
).Bạn cũng có thể trả về các giá trị của nhiều kiểu dữ liệu khác nhau.
package main import ( "fmt" ) // Hàm trả về một giá trị số nguyên và một chuỗi func getUserInfo() (int, string) { return 1, "Alice" } func main() { id, name := getUserInfo() // Nhận giá trị trả về fmt.Println("ID:", id) // Kết quả: ID: 1 fmt.Println("Tên:", name) // Kết quả: Tên: Alice }
getUserInfo
trả về một số nguyên và một chuỗi, cho phép bạn dễ dàng truy xuất thông tin liên quan đến người dùng.Nếu bạn không cần sử dụng một trong các giá trị trả về, bạn có thể sử dụng dấu _
để bỏ qua giá trị đó.
package main import ( "fmt" ) // Hàm trả về hai giá trị: tổng và hiệu func calculate(a int, b int) (int, int) { sum := a + b diff := a - b return sum, diff } func main() { total, _ := calculate(10, 5) // Bỏ qua giá trị hiệu fmt.Println("Tổng:", total) // Kết quả: Tổng: 15 }
_
.Việc trả về nhiều giá trị từ một hàm là một trong những tính năng mạnh mẽ và hữu ích của Go. Nó giúp giảm thiểu sự phức tạp của mã nguồn bằng cách cho phép các hàm trả về nhiều thông tin liên quan mà không cần phải sử dụng các cấu trúc dữ liệu phức tạp. Thao tác này rất tiện lợi cho việc tổ chức và quản lý dữ liệu trong các ứng dụng Go.