trả về nhiều giá trị của các hàm, hoặc đơn giản là bằng cách hoán đổi trực tiếp hai giá trị với cú pháp ngắn gọn. Go cho phép chúng ta hoán đổi hai giá trị mà không cần sử dụng biến tạm (temporary variable) như một số ngôn ngữ khác.
Cú pháp hoán đổi hai giá trị
Để hoán đổi hai giá trị trong Go, bạn có thể sử dụng cú pháp:
Cú pháp này cho phép bạn gán lại giá trị của a
và b
một cách nhanh chóng, tức là giá trị của a
sẽ trở thành b
và ngược lại.
Ví dụ:
package main
import "fmt"
func main() {
a := 5
b := 10
fmt.Println("Trước khi hoán đổi:")
fmt.Println("a =", a)
fmt.Println("b =", b)
// Hoán đổi giá trị của a và b
a, b = b, a
fmt.Println("Sau khi hoán đổi:")
fmt.Println("a =", a)
fmt.Println("b =", b)
}
Kết quả:
Trước khi hoán đổi:
a = 5
b = 10
Sau khi hoán đổi:
a = 10
b = 5
Giải thích:
- Ban đầu,
a
chứa giá trị 5
và b
chứa giá trị 10
.
- Sau khi thực hiện câu lệnh
a, b = b, a
, giá trị của a
được gán bằng giá trị của b
, và giá trị của b
được gán bằng giá trị của a
.
- Kết quả là giá trị của
a
và b
đã được hoán đổi cho nhau.
Hoán đổi các giá trị khác
Cú pháp này có thể được sử dụng để hoán đổi bất kỳ kiểu dữ liệu nào, miễn là cả hai giá trị có cùng kiểu dữ liệu. Ví dụ, bạn có thể hoán đổi hai chuỗi, hai giá trị kiểu float64
, hoặc thậm chí là hai con trỏ.
Ví dụ hoán đổi chuỗi:
package main
import "fmt"
func main() {
str1 := "Hello"
str2 := "World"
fmt.Println("Trước khi hoán đổi:")
fmt.Println("str1 =", str1)
fmt.Println("str2 =", str2)
// Hoán đổi hai chuỗi
str1, str2 = str2, str1
fmt.Println("Sau khi hoán đổi:")
fmt.Println("str1 =", str1)
fmt.Println("str2 =", str2)
}
Kết quả:
Trước khi hoán đổi:
str1 = Hello
str2 = World
Sau khi hoán đổi:
str1 = World
str2 = Hello
Tóm tắt:
- Trong Go, bạn có thể hoán đổi hai giá trị bằng cách sử dụng cú pháp
a, b = b, a
.
- Cú pháp này áp dụng cho mọi kiểu dữ liệu có thể so sánh được và không cần biến tạm trung gian.