Maison >développement back-end >Golang >Comment puis-je vérifier si un canal Go tamponné est plein avant d'envoyer des données ?
Comment déterminer la plénitude d'un canal tamponné
En Go, lors de l'envoi de données vers un canal tamponné, il est essentiel de savoir si le le canal est plein pour éviter de bloquer ou de perdre des données. Voici comment déterminer la plénitude d'un canal mis en mémoire tampon :
Instruction Select avec valeur par défaut
L'utilisation de l'instruction select avec une casse par défaut vous permet d'envoyer des données à un canal sauf s'il est plein :
package main import "fmt" func main() { ch := make(chan int, 1) // Attempt to add a value to the channel select { case ch <- 2: // Only sends if there's space fmt.Println("Value sent successfully") default: fmt.Println("Channel full. Data discarded") } }
Vérifier sans Envoi
Une autre façon de déterminer la plénitude du canal est d'utiliser len(ch) et cap(ch) :
if len(ch) == cap(ch) { // Channel may be full, but not guaranteed } else { // Channel not full, but may be by the time you attempt to send }
Remarque : Le résultat du la comparaison peut changer après vérification en raison de la nature asynchrone des canaux.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!