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 mạnh mẽ và linh hoạt của ngôn ngữ, cho phép bạn trả về nhiều giá trị cùng một lúc mà không cần phải sử dụng các cấu trúc dữ liệu phức tạp như structs hay slices.
Để trả về nhiều giá trị, bạn chỉ cần chỉ định kiểu dữ liệu của các giá trị đó trong định nghĩa hàm, cách nhau bởi dấu phẩy.
Dưới đây là một ví dụ đơn giản về một hàm trả về hai giá trị: một số nguyên và một chuỗi.
package main import "fmt" // Hàm trả về một số và một thông điệp func getDetails() (int, string) { return 42, "Hello, Go!" } func main() { // Gọi hàm và nhận các giá trị trả về number, message := getDetails() fmt.Printf("Number: %d, Message: %sn", number, message) }
getDetails
: Hàm này định nghĩa hai giá trị trả về: một giá trị kiểu int
và một giá trị kiểu string
. Nó trả về số 42
và chuỗi "Hello, Go!"
.main
, chúng ta gọi getDetails()
và lưu trữ các giá trị trả về vào các biến number
và message
.Khi bạn chạy đoạn mã trên, bạn sẽ nhận được kết quả:
Number: 42, Message: Hello, Go!
Ngoài việc trả về các giá trị mà không có tên, bạn cũng có thể định nghĩa các giá trị trả về với tên, điều này có thể giúp làm rõ hơn về ý nghĩa của các giá trị này.
package main import "fmt" // Hàm trả về với tên func calculateSumAndDifference(a int, b int) (sum int, difference int) { sum = a + b difference = a - b return // Không cần chỉ định các giá trị trả về ở đây } func main() { sum, difference := calculateSumAndDifference(10, 5) fmt.Printf("Sum: %d, Difference: %dn", sum, difference) }
Khi bạn chạy đoạn mã này, bạn sẽ nhận được kết quả:
Sum: 15, Difference: 5
calculateSumAndDifference
: Hàm này nhận hai tham số và trả về hai giá trị: tổng và hiệu. Các giá trị trả về được đặt tên là sum
và difference
.return
không có giá trị: Trong hàm, bạn có thể sử dụng return
mà không cần chỉ định giá trị, Go sẽ tự động trả về các giá trị đã được gán.Việc trả về nhiều giá trị từ một hàm trong Go là một tính năng hữu ích, giúp mã trở nên gọn gàng và dễ hiểu. Bạn có thể trả về các giá trị mà không cần chỉ định tên hoặc sử dụng các tên cho giá trị trả về, điều này có thể giúp làm rõ mục đích của từng giá trị. Kỹ thuật này thường được sử dụng trong các hàm mà cần trả về thông tin bổ sung, chẳng hạn như kết quả và lỗi trong các hàm xử lý.