"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment puis-je initialiser efficacement les tableaux dans GO, similaire au MEMSET de C ++?

Comment puis-je initialiser efficacement les tableaux dans GO, similaire au MEMSET de C ++?

Publié le 2025-02-06
Parcourir:860

How Can I Efficiently Initialize Arrays in Go, Similar to C  's memset?

Existe-t-il un équivalent de memset dans go?

Dans c, la fonction memset permet l'initialisation efficace des tableaux avec des valeurs spécifiques. Dans GO, bien qu'il n'y ait pas d'équivalent direct, plusieurs techniques peuvent obtenir des résultats similaires.

Loop itération

L'approche la plus simple consiste à utiliser une boucle pour définir chaque élément de un tableau à la valeur souhaitée.

func memsetLoop(a []int, v int) {
    for i := range a {
        a[i] = v
    }
}

copie répétée ()

Profitant de la fonction Copy () hautement optimisée, nous pouvons tirer parti d'un modèle de copie répété pour définir efficacement les valeurs du tableau.

func memsetRepeat(a []int, v int) {
    if len(a) == 0 {
        return
    }
    a[0] = v
    for bp := 1; bp  

Résultats de benchmark

Pour évaluer les performances de ces techniques, nous les comptons les uns contre les autres pour différentes tailles de tableau.

var a = make([]int, 1000) // Size will vary

func BenchmarkLoop(b *testing.B) {
    for i := 0; i  

Les résultats montrent que memSetRepeat () surpasse memsetloop () pour des tableaux plus grands, démontrant son efficacité pour une initialisation rapide.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3