Hàm ẩn danh trong Go rất hữu ích. Dưới đây là cú pháp, cách dùng và ví dụ minh họa về việc sử dụng hàm ẩn danh trong Golang.
Hàm ẩn danh (anonymous) là hàm không có tên. Nó hữu ích khi bạn muốn tạo một hàm nội tuyến. Trong Go, hàm ẩn danh cũng có thể tạo thành một closure. Hàm ẩn danh cũng được gọi là hàm literal.
Ví dụ:
package main
import "fmt"
func main() {
// Hàm ẩn danh
func() {
fmt.Println("Welcome! to Quantrimang.com")
}()
}
Kết quả:
Welcome! to Quantrimang.com
Cú pháp:
func(parameter_list)(return_type) {
// code..
// Dùng lệnh return nếu return_type được đưa ra
// nếu return_type không được cung cấp, thì không
// dùng lệnh return
return
}()
Gán 1 biến
Bạn có thể gán một hàm ẩn danh cho một biến. Biến này sau đó có thể được gọi như một hàm thông thường.
package main
import "fmt"
func main() {
// Gán một hàm ẩn danh cho một biến
value := func() {
fmt.Println("Welcome! to Quantrimang.com")
}
value()
}
Kết quả:
Welcome! to Quantrimang.com
Chuyển dưới dạng đối số
Bạn cũng có thể truyền một hàm ẩn danh làm đối số cho một hàm khác.
package main
import "fmt"
// Chuyển hàm ẩn danh làm đối số
func GFG(i func(p, q string) string) {
fmt.Println(i("Geeks", "for"))
}
func main() {
value := func(p, q string) string {
return p + q + "Geeks"
}
GFG(value)
}
Kết quả:
GeeksforGeeks
Trả về hàm ẩn danh
Bạn có thể trả về hàm ẩn danh từ một hàm khác.
package main
import "fmt"
// Trả về hàm ẩn danh
func GFG() func(i, j string) string {
myf := func(i, j string) string {
return i + j + "GeeksforGeeks"
}
return myf
}
func main() {
value := GFG()
fmt.Println(value("Welcome ", "to "))
}
Kết quả:
Welcome to GeeksforGeeks
Kết luận
Các hàm ẩn danh trong Golang rất linh hoạt và mạnh mẽ. Chúng có thể được sử dụng để tạo các hàm nội tuyến, closure và thậm chí để truyền và trả về các hàm. Hiểu cách sử dụng chúng hiệu quả có thể cải thiện đáng kể khả năng lập trình của bạn trong Go.