Làm cách nào để sử dụng câu lệnh chọn trong Golang?

Lam Cach Nao De Su Dung Cau Lenh Chon Trong Golang



MỘT chọn tuyên bố trong Golang cho phép các nhà phát triển đồng bộ hóa và giao tiếp giữa các quy trình, kênh và luồng dữ liệu của Go. Nó cho phép chương trình Go đợi trên nhiều thao tác kênh cùng một lúc và thực hiện thao tác đầu tiên đã sẵn sàng.

Trong bài viết này, chúng ta sẽ khám phá cách sử dụng chọn tuyên bố trong Golang và cung cấp các ví dụ để giúp bạn đạt được tính song song, đồng thời và đồng bộ hóa trong các chương trình Go.

Làm cách nào để sử dụng câu lệnh chọn trong Golang?

Tương tự như câu lệnh switch, chọn tuyên bố cho phép chúng tôi chọn và thực hiện một biểu thức trong số nhiều biểu thức, nhưng sự khác biệt chính giữa lựa chọn và chuyển đổi là chọn tuyên bố hoạt động trên nguyên tắc chờ đợi, có nghĩa là chọn tuyên bố sẽ không thực thi cho đến khi giao tiếp hoàn tất.







Ở đây, giao tiếp đề cập đến việc gửi và nhận dữ liệu qua bất kỳ kênh nào. Khi giao tiếp hoàn tất, kiểm tra tiếp theo được thực hiện, cho phép chúng tôi thấy rằng câu lệnh chọn của ngôn ngữ Go hoàn toàn phụ thuộc vào kênh.



Cú pháp cho Select Statement

Cú pháp đơn giản được sử dụng cho chọn tuyên bố sử dụng ngôn ngữ Go được hiển thị bên dưới:



lựa chọn {
trường hợp kênh_1 :
// mã để thực thi khi channel_1 sẵn sàng
trường hợp kênh_2 :
// mã để thực thi khi channel_2 sẵn sàng
trường hợp kênh_3 :
// mã để thực thi khi channel_3 sẵn sàng
trường hợp kênh số 4 :
// mã để thực thi khi channel_4 sẵn sàng
mặc định :
// mã để thực thi nếu không có kênh nào sẵn sàng
}

Đây:





  • Trong vòng một chọn tuyên bố , mỗi trường hợp đại diện cho một thao tác kênh, có thể là thao tác nhận hoặc thao tác gửi.
  • Các chọn tuyên bố đợi cho đến khi một trong các trường hợp sẵn sàng rồi chạy trường hợp đó và câu lệnh trường hợp liên quan.
  • Nó chọn kênh ngẫu nhiên trong trường hợp có nhiều kênh sẵn sàng thực hiện.

Cách tạo kênh trong Golang

Để tạo kênh trong Go, người dùng có thể sử dụng chức năng tạo theo sau là chan từ khóa và chỉ định loại kênh, có thể là int, string hoặc các loại khác.

ch := làm ( loại chan )

Thực hiện Select Statement trong Golang

Ở đây, chúng tôi sẽ cung cấp một số ví dụ để giúp bạn tìm hiểu những kiến ​​thức cơ bản về cách sử dụng chọn tuyên bố ở Golang.



ví dụ 1

Ví dụ sau đây của chọn tuyên bố thể hiện nó hoạt động như thế nào khi cả hai kênh đã sẵn sàng để thực thi.

gói chính

nhập khẩu 'fmt'

chức năng chính ( ) {

trên một := làm ( chan int )

str := làm ( chuỗi chan )

đi chan_num ( trên một )

đi chan_str ( str )

lựa chọn {

trường hợp Ch1 := <- trên một :

fmt. Println ( 'Dữ liệu kênh:' , Ch1 )

trường hợp Ch2 := <- str :

fmt. Println ( 'Dữ liệu kênh:' , Ch2 )

}

}

func chan_num ( số chan int ) {

trên một <- 67

}

func chan_str ( chuỗi str chan ) {

str <- 'Linux'

}

Trong ví dụ trên, chúng tôi đã tạo hai kênh, trên một, str và chúng tôi đã sử dụng chức năng Go chan_num() để gửi dữ liệu đến kênh num và chan_str() để gửi dữ liệu đến kênh str. Vì chương trình chứa hai kênh khác nhau nên chúng tôi đã sử dụng chọn tuyên bố để thực hiện một trong số họ.

Trường hợp Ch1 đọc giá trị từ số kênh và hiển thị nó. Tương tự, trường hợp Ch2 trả về giá trị từ str kênh. Chương trình trên trả về đầu ra của kênh đã sẵn sàng để sử dụng. đầu ra

ví dụ 2

Nếu bạn muốn thêm độ trễ cho một kênh và trả về đầu ra của một kênh khác, bạn có thể sử dụng thời gian ngủ() hoạt động trên một kênh xác định. Điều này cho phép bạn in đầu ra của kênh khác ra bàn điều khiển. Đây là một ví dụ về một trường hợp như vậy.

gói chính

nhập khẩu (

'fmt'

'thời gian'

)

chức năng chính ( ) {

trên một := làm ( chan int )

str := làm ( chuỗi chan )

đi chan_num ( trên một )

đi chan_str ( str )

lựa chọn {

trường hợp Ch1 := <- trên một :

fmt. Println ( 'Dữ liệu kênh:' , Ch1 )

trường hợp Ch2 := <- str :

fmt. Println ( 'Dữ liệu kênh:' , Ch2 )

}

}

func chan_num ( số chan int ) {

trên một <- 67

}

func chan_str ( chuỗi str chan ) {

thời gian . Ngủ ( 5 * thời gian . Thứ hai )

str <- 'Linux'

}

Trong đoạn mã trên, chúng tôi đã sử dụng thời gian ngủ() chức năng bên trong chan_str() chức năng. Chỉ có kênh num sẵn sàng thực hiện trong 5 giây đầu tiên. Kết quả là, các chọn tuyên bố chạy trường hợp Ch1 .

đầu ra

Ghi chú: Bạn có thể thêm độ trễ cho cả hai kênh để trì hoãn việc thực thi các kênh.

Phần kết luận

Các chọn tuyên bố trong Go cho phép lựa chọn và thực hiện một biểu thức trong số nhiều biểu thức bằng cách sử dụng nguyên tắc chờ, trong đó câu lệnh sẽ không thực thi cho đến khi quá trình giao tiếp hoàn tất. Các hướng dẫn nêu trên bao gồm chọn tuyên bố cú pháp cơ bản và ví dụ.