Maison > développement back-end > Golang > Les fonctions Go Variadic peuvent-elles mélanger des arguments énumérés et des tranches existantes ?

Les fonctions Go Variadic peuvent-elles mélanger des arguments énumérés et des tranches existantes ?

DDD
Libérer: 2024-12-13 07:22:12
original
917 Les gens l'ont consulté

Can Go Variadic Functions Mix Enumerated Arguments and Existing Slices?

Mélange de tranches "éclatées" et de paramètres réguliers dans des fonctions variadiques

Dans Go, les fonctions variadiques autorisent un nombre arbitraire d'arguments. Cependant, il n'est pas possible de combiner à la fois des éléments énumérés et des tranches existantes lors de la spécification des arguments.

Syntaxe des arguments variadiques

La valeur transmise à un paramètre variadique peut être soit spécifié via :

  1. Énumération des éléments individuels : func(arg1, arg2, arg3 ...string) {}
  2. Utilisation d'une tranche existante : func(s []string) {}

Mélange d'éléments énumérés et de tranches

Le code suivant ne sera pas compilé :

func main() {
    stuff := []string{"baz", "bla"}
    foo("bar", stuff...) // compile error: too many arguments
}

func foo(s ...string) {}
Copier après la connexion

C'est parce que Go ne permet pas de mélanger les deux syntaxes. Lors de l'énumération d'éléments individuels, une nouvelle tranche est créée. Lors de l'utilisation d'une tranche existante, la même tranche est utilisée comme paramètre variadique.

Raison de la limitation

La limitation est due à la façon dont Go traite les arguments variadiques. Lors de l'énumération des éléments, une nouvelle tranche est créée pour contenir les valeurs. Cependant, si une tranche existante est transmise, aucune nouvelle tranche n'est créée. Au lieu de cela, la tranche passée est directement affectée au paramètre variadique. Mélanger les deux nécessiterait l’allocation d’une nouvelle tranche, ce qui n’est actuellement pas pris en charge.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal