613 votes

Concaténation de deux tranches en Go

J'essaie de combiner la tranche [1, 2] et la tranche [3, 4] . Comment puis-je faire cela en Go ?

J'ai essayé :

append([]int{1,2}, []int{3,4})

mais a obtenu :

cannot use []int literal (type []int) as type int in append

Cependant, la documentation semble indiquer que c'est possible, qu'est-ce que je manque ?

slice = append(slice, anotherSlice...)

9voto

ASHWIN RAJEEV Points 130

La fonction append( ) et l'opérateur d'étalement

Deux tranches peuvent être concaténées à l'aide de la fonction append dans la bibliothèque standard de golang. Ce qui est similaire à la méthode variadic fonctionnement de la fonction. Nous devons donc utiliser ...

package main

import (
    "fmt"
)

func main() {
    x := []int{1, 2, 3}
    y := []int{4, 5, 6}
    z := append([]int{}, append(x, y...)...)
    fmt.Println(z)
}

Le résultat du code ci-dessus est : [1 2 3 4 5 6]

1 votes

Je ne sais pas pourquoi vous n'utilisez pas de z := append(x, y...) .

3voto

BaSO4 Points 61

append([]int{1,2}, []int{3,4}...) fonctionnera. Passer des arguments à ... paramètres.

Si f est variadique avec un paramètre final p de type ...T alors dans f le type de p est équivalent au type []T .

Si f est invoqué sans arguments réels pour p la valeur passée à p est nil .

Sinon, la valeur transmise est une nouvelle tranche de type []T avec un nouveau tableau sous-jacent dont les éléments successifs sont les arguments réels, qui doivent tous être assignables à T . La longueur et la capacité de la tranche sont donc le nombre d'arguments liés à p et peut différer pour chaque site d'appel.

Étant donné la fonction et les appels

func Greeting(prefix string, who ...string)
Greeting("nobody")
Greeting("hello:", "Joe", "Anna", "Eileen")

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X