Maison > développement back-end > Golang > Comment fonctionnent les modifications des tableaux transmises aux fonctions dans Go ?

Comment fonctionnent les modifications des tableaux transmises aux fonctions dans Go ?

Patricia Arquette
Libérer: 2024-10-31 04:57:01
original
256 Les gens l'ont consulté

How do modifications to arrays passed to functions work in Go?

Modification des tableaux transmis aux fonctions dans Go

Contrairement à certains langages de programmation, Go ne transmet pas implicitement les tableaux par référence. Lorsqu'un tableau est passé à une fonction, seule sa valeur est copiée. Par conséquent, les modifications apportées au tableau passé dans la fonction n'affecteront pas le tableau d'origine.

Cependant, dans Go, les tableaux ne sont pas explicitement déclarés. Au lieu de cela, nous travaillons avec des tranches, qui sont des vues dynamiques et redimensionnables des tableaux sous-jacents. Lorsqu'une tranche est passée à une fonction, seul le descripteur de tranche est copié, qui comprend un pointeur vers le tableau sous-jacent, sa longueur et sa capacité.

En conséquence, toute modification apportée aux éléments de la La tranche au sein de la fonction sera reflétée dans la tranche d'origine, car elles font toutes référence au même tableau sous-jacent.

Considérez l'exemple de code suivant :

<code class="go">func main() {
    tab := []int{1, 2, 3}
    fmt.Println(tab) // [1 2 3]
    reverse(tab)
    fmt.Println(tab) // [3 2 1]
}

func reverse(tab []int) {
    for i, j := 0, len(tab)-1; i < j; i, j = i+1, j-1 {
        tab[i], tab[j] = tab[j], tab[i]
    }
}</code>
Copier après la connexion

Dans cet exemple, la fonction inverse reçoit un onglet de tranche. Les modifications apportées à l'onglet slice au sein de la fonction, telles que l'échange d'éléments, affecteront la slice d'origine car elles font toutes deux référence au même tableau sous-jacent.

Par conséquent, lorsque vous transmettez un tableau à une fonction dans Go, rappelez-vous que seul le descripteur de tranche est copié. Toute modification apportée aux éléments de la tranche au sein de la fonction sera reflétée dans la tranche d'origine en raison de sa référence au tableau sous-jacent.

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