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!