Maksud <- dalam golang

PHPz
Lepaskan: 2023-05-13 11:10:08
asal
2717 orang telah melayarinya

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.

1. Saluran menghantar dan menerima

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 := &lt;- ch
Salin selepas log masuk

Pengendali <- di sini mempunyai dua makna berbeza:

  • &lt;- 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.

2. Tutup saluran

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 := &lt;- ch
Salin selepas log masuk

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.

3. Digunakan untuk komunikasi saluran tanpa sekatan

<- 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 := &lt;- 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")
}
Salin selepas log masuk

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.

4. Digunakan untuk menghalang amaran pengkompil

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":

&lt;- ch
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan