Junior — Middle
Comment augmenter la taille du segment passé à une fonction dans un langage de programmation?
sobes.tech IA
Réponse de l'IA
En Go, une tranche (slice) est une structure qui contient un pointeur vers un tableau, une longueur et une capacité. Si vous devez augmenter la taille d’une tranche passée à une fonction, vous pouvez faire ce qui suit :
- Passer la tranche par valeur, mais créer à l’intérieur de la fonction une nouvelle tranche avec une longueur ou une capacité augmentée en utilisant la fonction
append. - Si vous devez modifier la tranche elle-même (par exemple, augmenter sa longueur) et que vous souhaitez que les modifications soient visibles à l’extérieur, vous pouvez passer un pointeur vers la tranche (
*[]T), ainsi à l’intérieur de la fonction, vous pouvez réassigner la tranche.
Exemple d’augmentation d’une tranche à l’intérieur d’une fonction en retournant une nouvelle tranche :
func extendSlice(s []int, n int) []int {
// Ajouter n éléments nuls
s = append(s, make([]int, n)...)
return s
}
func main() {
s := []int{1, 2, 3}
s = extendSlice(s, 2)
fmt.Println(s) // [1 2 3 0 0]
}
Si la fonction doit modifier la tranche sans la retourner, vous pouvez utiliser un pointeur :
func extendSlicePtr(s *[]int, n int) {
*s = append(*s, make([]int, n)...)
}
func main() {
s := []int{1, 2, 3}
extendSlicePtr(&s, 2)
fmt.Println(s) // [1 2 3 0 0]
}
Ainsi, pour augmenter la taille d’une tranche dans une fonction, vous devez soit retourner une nouvelle tranche, soit passer un pointeur vers la tranche.