Dalam bahasa Go, pernyataan pilih adalah seperti pernyataan suis , tetapi dalam pernyataan pilih, pernyataan kes merujuk kepada komunikasi, iaitu penghantaran atau penerimaan operasi pada saluran.

Sintaks:
select{
case SendOrReceive1: // Lệnh
case SendOrReceive2: // Lệnh
case SendOrReceive3: // Lệnh
.......
default: // Lệnh
Dalam artikel ini, kita akan belajar cara menggunakan kes lalai untuk mengelakkan kebuntuan. Tetapi pertama-tama, mari kita ketahui apakah kes kebuntuan apabila menggunakan arahan pilih Golang ?
Perkara yang perlu diketahui mengenai kes kebuntuan di Golang
Jalan buntu: Apabila anda cuba membaca atau menulis data daripada saluran tetapi saluran itu kosong. Jadi ia menyekat pelaksanaan goroutine semasa dan memberikan kawalan kepada goroutine lain, tetapi jika tiada goroutine lain tersedia atau goroutine lain sedang berehat kerana keadaan ini, program akan ranap. Fenomena ini dipanggil kebuntuan. Seperti yang ditunjukkan dalam contoh di bawah:
Contohnya:
// Chương trình Go minh hoạc
// cách deadlock phát sinh
package main
// Hàm chính
func main() {
// Tạo một kênh
// Deadlock phát sinh bởi
// không có goroutine đang viết
// vào kênh này, vì thế
// lệnh select đã bị khóa mãi mãi
c := make(chan int)
select {
case <-c: }="" }="">
Keputusan:
fatal error: all goroutines are asleep - deadlock!
goroutine 1 [chan receive]:
main.main()
Untuk mengelakkan situasi ini, kami menggunakan kes lalai dalam pernyataan pilih. Dalam erti kata lain, apabila kebuntuan berlaku dalam atur cara, kes lalai bagi pernyataan pilih dilaksanakan untuk mengelakkan kebuntuan. Seperti dalam contoh di bawah, kami menggunakan kes lalai dalam pernyataan pilih untuk mengelakkan kebuntuan.
Contohnya:
// Chương trình Go minh họa cách giải quyết
// vấn đề deadlock bằng case mặc định
package main
import "fmt"
// Hàm chính
func main() {
// Tạo 1 kênh
c := make(chan int)
select {
case <-c: default:="" fmt.println("!..="" default="" case..!")="" }="" }="">
Keputusan:
!.. Default case..!
Anda juga dibenarkan menggunakan kes lalai apabila penyataan pilih hanya mempunyai saluran nol . Seperti yang ditunjukkan dalam contoh di bawah, saluran c adalah sifar, jadi kes lalai dilaksanakan jika kes lalai di sini tidak tersedia, maka program akan menyekat selama-lamanya dan kebuntuan timbul.
Contohnya:
// Chương trình Go minh họa
// chạy case mặc định
package main
import "fmt"
// Hàm chính
func main() {
// Tạo một kênh
var c chan int
select {
case x1 := <-c: fmt.println("value:="" ",="" x1)="" default:="" fmt.println("default="" case..!")="" }="" }="">
Keputusan:
Default case..!