Di Golang, <-
ialah pengendali yang sangat penting dengan pelbagai makna dan kegunaan. Dalam artikel ini, kami akan menerangkan beberapa kegunaan biasa operator <-
dan maksudnya melalui contoh.
Saluran Golang ialah komponen penting untuk merealisasikan komunikasi antara coroutine Gunakan operator <-
untuk menjalankan operasi penghantaran dan penerimaan saluran adalah seperti berikut :
ch := make(chan int) // 发送数据 ch <- 10 // 接收数据 x := <- ch
Pengendali <-
di sini mempunyai dua makna berbeza:
<- ch
: Terima data daripada saluran ch
dan tetapkan kepada pembolehubah x
ch <- x
: Hantar pembolehubah x
ke saluran ch
Arah anak panah dalam
juga menunjukkan arah aliran data operasi. Di sebelah kanan ialah operasi hantar.
Saluran juga boleh ditutup menggunakan fungsi close()
Setelah saluran ditutup, penghantaran data sekali lagi akan menyebabkan panik. tetapi anda boleh terus menerima data. Kita boleh menggunakan operator <-
untuk mengesan jika saluran ditutup. Jika nilai
ch := make(chan int) // 关闭通道 close(ch) // 接收值和通道关闭状态 v, ok := <- ch
ok
ialah false
, ini bermakna saluran telah ditutup. Jika penimbal saluran tidak kosong, maka <-
akan mengembalikan nilai dalam penimbal, jika tidak, ia akan mengembalikan nilai sifar untuk jenis yang sepadan.
<-
juga boleh digunakan untuk komunikasi saluran tanpa sekatan. Apabila terdapat data yang akan diterima atau dihantar dalam saluran, operasi yang sepadan akan dilakukan, jika tidak, ia akan dikembalikan serta-merta. Ini boleh dicapai dengan membalut operasi dalam pernyataan select
:
ch := make(chan int) // 非阻塞接收,若通道为空,直接进入 default 分支 select { case x := <- ch: fmt.Println(x) default: fmt.Println("no data available") } // 非阻塞发送,若通道已满,直接进入 default 分支 select { case ch <- 10: fmt.Println("data send") default: fmt.Println("no receiver available") }
Dalam kod di atas, apabila saluran kosong, pernyataan select
pertama akan terus melaksanakan cawangan lalai apabila saluran itu kosong kosong Apabila penuh, pernyataan select
kedua juga akan melaksanakan secara langsung cawangan lalai.
Dalam sesetengah kes, kami mungkin perlu menerima nilai secara eksplisit dalam kod, tetapi kami tidak perlu menggunakan nilai ini. Menggunakan operator <-
melakukan ini sambil menghalang pengkompil daripada menjana amaran "nilai tidak digunakan":
<- ch
Pernyataan ini akan menerima nilai daripada saluran ch
dan mengabaikannya, untuk mencapai tujuan " menerima tetapi tidak menggunakan".
Melalui empat contoh di atas, kita dapat melihat peranan penting operator <-
dalam kod Golang. Ia bukan sahaja digunakan untuk menerima dan menghantar saluran, tetapi juga boleh digunakan untuk menghalang amaran pengkompil dan komunikasi saluran tidak menyekat. Menguasai penggunaan ini akan membantu meningkatkan kebolehbacaan dan prestasi kod Golang kami.
Atas ialah kandungan terperinci Maksud <- dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!