Comprendre la signification de ...interface{} dans Go
Dans Go, un type de paramètre préfixé par trois points (... ) est connu sous le nom de paramètre variadique. Cela signifie qu'une fonction peut accepter n'importe quel nombre d'arguments pour ce paramètre particulier.
Considérez la fonction suivante :
func DPrintf(format string, a ...interface{}) (n int, err error) { if Debug > 0 { n, err = fmt.Printf(format, a...) } return }
Le paramètre a est de type ...interface{}, indiquant qu'il peut accepter zéro ou plusieurs arguments de n'importe quel type. Ces arguments sont ensuite reçus par la fonction sous la forme d'une tranche du type déclaré pour le paramètre, qui dans ce cas est []interface{}.
La spécification Go fournit l'explication suivante :
"Le paramètre final dans une signature de fonction peut avoir un type préfixé par .... Une fonction avec un tel paramètre est appelée variadique et peut être invoquée avec zéro ou plusieurs arguments pour ce paramètre."
Par conséquent, un paramètre de type ...interface{} est équivalent à un paramètre de type []interface{} au sein de la fonction. La différence réside dans la manière dont les arguments sont transmis à la fonction. Ils peuvent être transmis individuellement ou en une seule tranche, auquel cas la valeur de la tranche doit être suffixée par les trois points (...).
Par exemple, les deux appels suivants à la fonction fmt.Println produira le même résultat :
fmt.Println("First", "Second", "Third")
s := []interface{}{"First", "Second", "Third"} fmt.Println(s...)
Dans les deux cas, la tranche s est passée à la fonction Println avec les trois points, indiquant qu'elle doit être traitée comme une argument variadique.
Ce mécanisme offre de la flexibilité en permettant aux fonctions d'accepter un nombre variable d'arguments, les rendant plus polyvalents et réutilisables.
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!