Différence entre []String et ...String dans Go

Jay Singh 30 janvier 2023
  1. Définir une tranche à l’aide de []string dans Go
  2. Définir une fonction variadique en utilisant ...string dans Go
  3. Utilisez à la fois []string et ...string dans Go
Différence entre []String et ...String dans Go

Une section de tableau est appelée tranche. Les tranches offrent plus de puissance, de flexibilité et de commodité que les baies.

Les tranches sont indexables et ont une longueur, un peu comme les tableaux. Contrairement aux tableaux, ils peuvent être étendus.

Une tranche est une structure de données qui définit une section contiguë d’un tableau et est conservée séparément de la variable de tranche.

Un tableau n’est pas la même chose qu’une tranche. Une tranche d’un tableau en est un sous-ensemble.

Cet article traitera des différences entre []string et ...string dans Go.

Définir une tranche à l’aide de []string dans Go

Dans cet exemple, nous avons utilisé les commandes for et range pour parcourir un ensemble de mots.

package main

import "fmt"

func main() {
    words := []string{"Iron Man", "Thor", "Hulk", "Dr Strange", "Spiderman"}
    for idx, word := range words {
        fmt.Println(idx, word)
    }
}

Production:

0 Iron Man
1 Thor
2 Hulk
3 Dr Strange
4 Spiderman

Définir une fonction variadique en utilisant ...string dans Go

Une ellipse (...) devant le paramètre définit une fonction variadique. Créons un programme qui répond aux noms Avengers fournis à une fonction.

Nous avons conçu une méthode sayHello qui accepte un paramètre, names. Comme nous avons ajouté des points de suspension (...) avant le type de données : ...string, l’argument est une variable.

Go comprend que la fonction peut prendre zéro, un ou plusieurs paramètres.

Le paramètre names est envoyé à la méthode sayHello sous forme de tranche. Comme le type de données est une chaîne, le paramètre names peut être géré à l’intérieur du corps de la méthode comme une tranche de chaînes ([]string).

Nous pouvons utiliser l’opérateur range pour construire une boucle qui itère sur la tranche de chaînes.

package main

import "fmt"

func main() {
    sayHello()
    sayHello("Iron Man")
    sayHello("Thor", "Hulk", "Dr Strange", "Spiderman")
}

func sayHello(names ...string) {
    for _, n := range names {
        fmt.Printf("Hello %s\n", n)
}

Production:

Hello Iron Man
Hello Thor
Hello Hulk
Hello Dr Strange
Hello Spiderman

Utilisez à la fois []string et ...string dans Go

package main

import "fmt"

func f(args ...string) {
    fmt.Println(len(args))
    for i, s := range args {
        fmt.Println(i, s)
    }
}

func main() {
    args := []string{"Hello", "Jay"}
    f(args...)
}

Production:

2
0 Hello
1 Jay

Article connexe - Go Slice

Article connexe - Go Variadic