Maison > développement back-end > Golang > Go est l'équivalent du memset de C : comment initialiser efficacement des tableaux avec des valeurs non nulles ?

Go est l'équivalent du memset de C : comment initialiser efficacement des tableaux avec des valeurs non nulles ?

Mary-Kate Olsen
Libérer: 2024-12-20 00:38:13
original
643 Les gens l'ont consulté

Go's Equivalent to C  's memset: How to Efficiently Initialize Arrays with Non-Zero Values?

Aller équivalent au memset de C

Question originale :

Y a-t-il une méthode dans Go, cela est analogue à la fonction memset de C, qui permet une initialisation efficace des tableaux avec des valeurs non nulles valeurs ?

Réponse :

Go ne propose pas d'équivalent direct à memset dans sa bibliothèque standard. Cependant, plusieurs approches peuvent obtenir des fonctionnalités similaires :

Solution basée sur une boucle :

func memsetLoop(a []int, v int) {
    for i := range a {
        a[i] = v
    }
}
Copier après la connexion

Cette boucle simple parcourt un tableau et attribue la valeur v à chaque élément.

Solution optimisée utilisant copy() :

Go's La fonction copy() est hautement optimisée et peut être utilisée à cette fin :

func memsetRepeat(a []int, v int) {
    if len(a) == 0 {
        return
    }
    a[0] = v
    for bp := 1; bp < len(a); bp *= 2 {
        copy(a[bp:], a[:bp])
    }
}
Copier après la connexion

Cette solution définit le premier élément manuellement, puis copie à plusieurs reprises la partie initialisée du tableau sur les éléments restants.

Comparaison des performances :

Les benchmarks montrent que la solution memsetRepeat surpasse l'approche basée sur des boucles pour les tableaux plus grands en raison de la fonction copy() optimisée.

Pour résumer, les programmeurs Go peuvent utiliser soit la solution basée sur des boucles pour plus de simplicité, soit la solution optimisée memsetRepeat pour améliorer les performances lors de l'initialisation de tableaux avec des valeurs non nulles.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal