|
Go hỗ trợ anonymous functions, hàm này có thể tạo closures. Hàm ẩn danh tiện lợi khi bạn muốn tạo một hàm mà không cần đặt tên cho nó. |
|
![]()
package main |
|
import "fmt" |
|
|
Hàm |
func intSeq() func() int { i := 0 return func() int { i++ return i } } |
func main() { |
|
|
Chúng ta gọi |
nextInt := intSeq()
|
|
Bạn có thể thấy tác động của closure bằng cách
gọi |
fmt.Println(nextInt())
fmt.Println(nextInt())
fmt.Println(nextInt())
|
|
Để xác nhận rằng trạng thái là độc nhất cho một hàm nhất định, hãy tạo và thử lại hàm mới. |
newInts := intSeq()
fmt.Println(newInts())
}
|
$ go run closures.go 1 2 3 1 |
|
|
Tính năng cuối cùng của hàm chúng ta sẽ xem xét là đệ quy (recursion). |
Ví dụ tiếp theo: Recursion.