J'essaie d'apprendre Go, voici donc ma fonction très simple pour supprimer les doublons adjacents de la tranche pour l'exercice du livre par Donovan & Kernighan.
Voici le code: https://play.golang.org/p/avHc1ixfckModifier le contenu de la tranche et la capacité dans une fonction in-place
package main
import "fmt"
func main() {
a := []int{0, 1, 1, 3, 3, 3}
removeDup(a)
fmt.Println(a)
}
func removeDup(s []int) {
n := len(s)
tmp := make([]int, 0, n)
tmp = append(tmp, s[0])
j := 1
for i := 1; i < n; i++ {
if s[i] != s[i-1] {
tmp = append(tmp, s[i])
j++
}
}
s = s[:len(tmp)]
copy(s, tmp)
}
Il doit imprimer [0 1 3]
- et j'ai vérifié, en fait tmp
à la fin de la fonction qu'il a forme désirée. Cependant, le résultat est [0 1 3 3 3 3]
. Je suppose qu'il y a quelque chose avec la fonction copy
. Puis-je en quelque sorte remplacer la tranche d'entrée s
par la temp
ou la découper à la longueur désirée?
'removeDup' devrait retourner la nouvelle tranche. – zerkms