Les fonctions variadiques sont des fonctions qui acceptent un nombre illimité d'arguments. En règle générale, ils sont exprimés sous la forme
func hello(friends ...string) {
// ...
}
Très facile à reconnaître grâce aux 3 points...
.
On peut appelerhello()
comme ça:
hello("tony", "mark", "mary", "joe")
ou:
hello("tony")
ou avec un nombre infini de chaînes.
Un exemple de la bibliothèque standard:append()
append
est une fonction variadique, définie comme
func append(slice []Type, elems ...Type) []Type
Une utilisation courante est lors de la suppression d'un élément à la positioni
à partir d'un tableaua
.
a = append(a[:i], a[i+1:]...)
Cette ligne crée une nouvelle tranche en supprimant l'élément à la positioni
dansa
, en combinant les éléments de 0 à i (non inclus), et de i + 1 à la fin.
Quel est le but de...
?
append
accepte une tranche comme premier argument, et un nombre illimité d'arguments, tous avec un typeassignableau type de ses éléments.
L'écriture
a = append(a[:i], a[i+1:]...)
équivaut à l'écriture
a = append(a[:i], a[i+1], a[i+2], a[i+3], a[i+4]) //and so on, until the end of the slice.
Utilisanta[i+1:]...
est essentiellement une syntaxe abrégée, comme le décrit la spécification Go danshttps://golang.org/ref/spec#Passing_arguments_to_..._parameters:
Si f est variadique avec un paramètre final p de type… T, alors dans f le type de p équivaut au type [] T. Si f est invoqué sans argument réel pour p, la valeur passée à p est nulle. Sinon, la valeur passée 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
Plus de tutoriels go:
- Utilisation du proxy inverse NGINX pour servir les services Go
- Faire une copie d'une structure dans Go
- Les bases d'un serveur Web Go
- Trier un type de carte dans Go
- Allez les pointeurs en un mot
- Go Tags expliqué
- Aller au formatage de la date et de l'heure
- Traitement JSON avec Go
- Fonctions Go Variadic
- Fiche de triche Go Strings
- L'interface Go Empty expliquée
- Débogage Go avec VS Code et Delve
- Named Go renvoie des paramètres
- Générer des nombres et des chaînes aléatoires dans Go
- Structure du système de fichiers d'un projet Go
- Algorithme de recherche binaire implémenté dans Go
- Utilisation des indicateurs de ligne de commande dans Go
- GOPATH a expliqué
- Créez une application de ligne de commande avec Go: lolcat
- Création d'une commande CLI avec Go: cowsay
- Utilisation de Shell Pipes avec Go
- Tutoriel Go CLI: Clone de fortune
- Lister les fichiers dans un dossier avec Go
- Utilisez Go pour obtenir une liste des référentiels à partir de GitHub
- Allez, ajoutez une tranche de chaînes à un fichier
- Allez, convertissez une chaîne en une tranche d'octets
- Visualisez vos contributions Git locales avec Go
- Premiers pas avec Go CPU et profilage de la mémoire
- Résolution de l'erreur "ne prend pas en charge l'indexation" dans un programme Go
- Mesure du temps d'exécution dans un programme Go
- Création d'un robot d'exploration Web avec Go pour détecter les titres en double
- Go Best Practices: pointeur ou récepteurs de valeur?
- Go Best Practices: Devez-vous utiliser une méthode ou une fonction?
- Go Structures de données: définir
- Aide-mémoire Go Maps
- Générer des implémentations pour les types génériques dans Go
- Go Data Structures: Dictionnaire
- Structures de données Go: table de hachage
- Implémenter des écouteurs d'événements dans Passer par les canaux
- Go Structures de données: pile
- Go Structures de données: file d'attente
- Go Structures de données: arbre de recherche binaire
- Go Structures de données: graphique
- Structures de données Go: liste liée
- Le guide complet des structures de données Go
- Comparaison des valeurs Go
- Est-ce que Go est orienté objet?
- Travailler avec une base de données SQL dans Go
- Utilisation des variables d'environnement dans Go
- Tutoriel Go: API REST soutenue par PostgreSQL
- Activation de CORS sur un serveur Web Go
- Déployer une application Go dans un conteneur Docker
- Pourquoi Go est un langage puissant à apprendre en tant que développeur PHP
- Allez, supprimez le caractère de nouvelle ligne io.Reader.ReadString
- Allez, comment observer les changements et reconstruire votre programme
- Allez, comptez les mois depuis une date
- Accéder aux paramètres HTTP POST dans Go