Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah anda mengukur bilangan elemen dalam saluran penimbal dalam Go?

Bagaimanakah anda mengukur bilangan elemen dalam saluran penimbal dalam Go?

Patricia Arquette
Patricia Arquetteasal
2024-11-13 06:17:02602semak imbas

How do you measure the number of elements in a buffered channel in Go?

Cara Mengukur Bilangan Elemen dalam Saluran Penampan

Saluran Penampan dalam Go menyediakan cara untuk memegang sejumlah elemen sebelum menyekat sama ada operasi hantar atau terima. Menentukan kiraan elemen yang disimpan dalam saluran boleh menjadi penting untuk menguruskan kawalan aliran antara pengeluar dan pengguna. Walau bagaimanapun, disebabkan keselarasan, mendapatkan ukuran yang tepat boleh menjadi mencabar.

Satu pendekatan untuk mengukur bilangan elemen dalam saluran ialah menggunakan fungsi len() terbina. Menurut dokumentasi Go, len() mengembalikan panjang objek berdasarkan jenisnya. Untuk saluran, len() mengembalikan bilangan elemen beratur (belum dibaca) dalam penimbal saluran.

Untuk menunjukkan ini, pertimbangkan contoh kod berikut:

package main

import "fmt"

func main() {
        c := make(chan int, 100)
        for i := 0; i < 34; i++ {
                c <- 0
        }
        fmt.Println(len(c))
}

Dalam kod ini, kami cipta saluran buffered dengan kapasiti 100. Gelung kemudian digunakan untuk menghantar 34 elemen ke dalam saluran. Akhir sekali, kami menggunakan len(c) untuk menentukan bilangan elemen yang sedang disimpan dalam saluran.

Apabila anda menjalankan program ini, ia akan mengeluarkan:

34

Ini mengesahkan bahawa len( ) boleh digunakan untuk mengukur bilangan elemen dalam saluran, walaupun dengan kemungkinan gangguan berkaitan konkurensi.

Atas ialah kandungan terperinci Bagaimanakah anda mengukur bilangan elemen dalam saluran penimbal dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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