sách gpt4 ai đã đi

Chọn ví dụ kênh câu lệnh

In lại Tác giả: Data Little Sun Thời gian cập nhật: 2023-10-29 03:47:16 25 4
mua khóa gpt4 Nike

Tôi mới làm quen với golang và muốn hiểu cách hoạt động của câu lệnh select https://www.tutorialspoint.com/go/go_select_statement.htm

gói chính

nhập khẩu "fmt"

hàm main() {
var c1, c2, c3 kênh int
biến i1, i2 int
lựa chọn {
trường hợp i1 = <-c1:
fmt.Printf("đã nhận ", i1, " từ c1\n")
trường hợp c2 <- i2:
fmt.Printf("đã gửi ", i2, " đến c2\n")
trường hợp i3, ok := (<-c3): // giống như: i3, ok := <-c3
nếu được {
fmt.Printf("đã nhận ", i3, " từ c3\n")
} khác {
fmt.Printf("c3 đã đóng\n")
}
mặc định:
fmt.Printf("không có giao tiếp\n")
}
}

Hiện tại không có lời giải thích nào cho các kênh. Bây giờ tôi không biết làm thế nào để kích hoạt đầu ra khác thành "không có giao tiếp".

Có ai có thể cho tôi ví dụ cho từng trường hợp không?

1 Câu trả lời

lựa chọn Lựa chọn câu lệnh trường hợpHoạt động truyền thông của ai sẽ không bị chặn? Nếu có nhiều trường hợp giao tiếp. op không chặn, mà được chọn ngẫu nhiên.

Bởi vì trong ví dụ này tất cả các hoạt động giao tiếp sẽ bị chặn và bởi vì mặc địnhĐiều kiện là nó sẽ được thực hiện.

Để "kích hoạt" một trường hợp khác, bạn phải đảm bảo sự giao tiếp của trường hợp đó. op sẽ không bị chặn. Trong ví dụ này, không ai gửi hoặc nhận bất cứ thứ gì từ bất kỳ kênh nào được sử dụng trong ví dụ. Thậm chí chúng còn chưa được khởi tạo nữa. Gửi và nhận từ không Kênh bị chặn mãi mãi (xem Kênh chưa được khởi tạo hoạt động như thế nào? ). Vì vậy, bạn nên làm như sau: khởi tạo một kênh và gửi đến kênh đó/nhận từ kênh đó trong những trường hợp bạn muốn kích hoạt kênh đó. Ví dụ:

c1 = make(chan int, 1)
c1 <- 1

Đoạn mã này khởi tạo c1Một kênh có bộ đệm là 1 và gửi giá trị vào đó. Vì vậy trong lựa chọnKhai báo hoạt động giao tiếp saui1 = <-c1sẽ không chặn, vì vậy mục này sẽ được chọn và đầu ra sẽ là:

nhận được 1 từ c1

hiện hữu Đi đến Sân chơi (Lưu ý: Tôi sẽ Inf() Cuộc gọi được thay đổi thành InIn() . )

Lưu ý rằng việc gửi/nhận từ kênh có thể xảy ra đồng thời trên các goroutine khác. Để đơn giản, tôi đã chọn một kênh đệm và cùng một goroutine để nó hoạt động như bạn mong đợi ngay cả trên Go Playground.

Thông tin thêm về các kênh:Kênh Golang được sử dụng để làm gì?

Liên quan đến ví dụ về câu lệnh lựa chọn kênh, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/50039483/

25 4 0
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com