Từ đọc sách của tôi của spec:Sự khác biệt về phạm vi đóng cửa giữa các khai báo biến ngắn và các khai báo dài trong Go là gì?
Một khai báo biến ngắn ... là viết tắt của một thường xuyên biến khai với các biểu thức khởi tạo nhưng không có loại ...
Tôi đã nghĩ rằng hai giống hệt nhau:
var f func()
f = func() {
...
}
và
f := func() {
...
}
Nhưng có vẻ như không. Tôi đã cố gắng để quấn một chức năng tự đệ quy bên trong một chức năng bên ngoài, nhưng công trình này:
func myOuter() {
var f func()
f = func() {
f()
}
f()
}
Nhưng điều này không, nói undefined: f
trong hàm nội tại.
func myOuter() {
f := func() {
f()
}
f()
}
Vậy sự khác biệt là gì? Có cách nào để viết điều này với tuyên bố mẫu ngắn hay tôi có phải viết nó dài tay không?
Cảm ơn Kissaki, tôi rõ ràng đã dán cùng một điều hai lần do nhầm lẫn. – Joe