Maison  >  Article  >  développement back-end  >  Comment créer des canaux distincts dans Go : un guide de prévention des fuites de mémoire

Comment créer des canaux distincts dans Go : un guide de prévention des fuites de mémoire

Linda Hamilton
Linda Hamiltonoriginal
2024-10-29 04:40:02439parcourir

How to Create Distinct Channels in Go: A Guide to Memory Leak Prevention

Canaux distinctifs dans Go

Dans Go, une exigence courante est de créer des canaux qui ne génèrent que des valeurs distinctes. Pour y parvenir, cependant, nécessite quelques considérations supplémentaires.

Mise en œuvre

Une solution simple consiste à utiliser une carte pour stocker les valeurs rencontrées. Voici une implémentation simple :

<code class="go">func UniqueGen(min, max int) <-chan int {
    m := make(map[int]struct{}, max-min)
    ch := make(chan int)
    go func() {
        for i := 0; i < 1000; i++ {
            v := min + rand.Intn(max)
            if _, ok := m[v]; !ok {
                ch <- v
                m[v] = struct{}{}
            }
        }
        close(ch)
    }()

    return ch
}</code>

Problèmes de fuite de mémoire

Lors de l'utilisation d'une carte pour mémoriser des valeurs rencontrées précédemment, on peut s'inquiéter des fuites de mémoire. Cependant, dans cette implémentation, la carte est limitée à la plage de valeurs possibles (max - min) et est effacée à la fermeture du canal. Il n’y a donc aucun souci de fuite mémoire.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn