Tôi bắt đầu học cách học ngôn ngữ ngày trước. Khi tôi cố bắt đầu viết một số mã vui, tôi bị mắc kẹt bởi một hành vi kỳ lạ.chức năng đệ quy trong ngôn ngữ đi
package main
import "fmt"
func recv(value int) {
if value < 0 {
return
}
fmt.Println(value)
go recv(value-1)
}
func main() {
recv(10)
}
khi tôi chạy mã trên, chỉ 10
được in. Khi tôi xóa go
trước khi gọi tới recv
, 10
đến 0
được in ra. Tôi tin rằng tôi đang lạm dụng thói quen đi làm ở đây, nhưng tôi không thể hiểu tại sao nó thất bại bắt đầu một thói quen đi theo cách này.
Đối với kênh tín hiệu, nơi dữ liệu kênh không quan trọng, bạn có thể sử dụng 'chan struct {}'. Một cấu trúc rỗng không chiếm bộ nhớ, trong khi vẫn cho phép hành vi mong muốn. Trong khi một boolean chiếm một byte. – jimt
Vâng, thành thật mà nói tôi đã đi cho một bool để không làm cho nó phức tạp hơn. Nhưng vâng, một cấu trúc rỗng là kỹ thuật tốt hơn. Bạn có muốn kết hợp nó trong câu trả lời của tôi hay tôi sẽ tự chỉnh sửa nó? :) –
Đó là câu trả lời của bạn, hãy chọn nó :) – jimt