Maison >développement back-end >Golang >Comment puis-je modifier une tranche Go dans une fonction et faire en sorte que les modifications soient reflétées dans la tranche d'origine ?

Comment puis-je modifier une tranche Go dans une fonction et faire en sorte que les modifications soient reflétées dans la tranche d'origine ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-19 14:07:16449parcourir

How Can I Modify a Go Slice in a Function and Have the Changes Reflected in the Original Slice?

Passer des tranches par référence pour modifier la tranche d'origine

Dans Go, les tranches sont passées par valeur, ce qui signifie modifier une tranche au sein d'une fonction n'affectera pas la tranche d'origine en dehors de la fonction. Pour surmonter cette limitation, vous pouvez passer un pointeur vers la tranche, permettant à la fonction de modifier la tranche d'origine par référence.

Passer un pointeur vers une tranche

À passer un pointeur vers une tranche, la signature de la fonction doit inclure un type de pointeur pour la tranche paramètre :

func modifySlice(slice *[]int) {
    *slice = append(*slice, 4)
}

Exemple :

nums := []int{1, 2, 3}
modifySlice(&nums)
fmt.Println(nums) // Prints [1, 2, 3, 4]

Dans cet exemple, la fonction modifierSlice prend un pointeur vers une tranche d'entiers. À l'intérieur de la fonction, l'opérateur astérisque (*) déréférence le pointeur pour obtenir la tranche d'origine, puis ajoute 4 à la tranche.

Renvoi d'une tranche modifiée

Une autre approche consiste à renvoyer la tranche modifiée de la fonction :

nums := []int{1, 2, 3}

func modifyAndReturnSlice(slice []int) []int {
    return append(slice, 4)
}

nums = modifyAndReturnSlice(nums)
fmt.Println(nums) // Prints [1, 2, 3, 4]

Cette approche est idiomatique en Go et ne nécessite pas de passer un pointeur vers la tranche.

Choisir l'approche appropriée

Le choix entre passer un pointeur sur une tranche ou renvoyer une tranche modifiée dépend des exigences spécifiques de votre fonction et structure du code. Passer un pointeur est souvent utile lorsque vous devez itérer et modifier plusieurs tranches ou si les modifications sont complexes. Renvoyer une tranche modifiée est préférable lorsque la fonction n'a besoin de modifier qu'une seule tranche et que les modifications sont simples.

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