Met variabele functies in Go kunt u een variabel aantal argumenten aan een functie doorgeven. Deze functie is handig als u niet van tevoren weet hoeveel argumenten u gaat doorgeven. Een variadische functie van Golang accepteert meerdere argumenten van hetzelfde type en kan met een willekeurig aantal argumenten worden aangeroepen, ook zonder.

package main
import "fmt"
// Hàm Variadic tính tổng
func sum(nums ...int) int {
total := 0
for _, n := range nums {
total += n
}
return total
}
func main() {
fmt.Println("Sum of 1, 2, 3:", sum(1, 2, 3))
fmt.Println("Sum of 4, 5:", sum(4, 5))
fmt.Println("Sum of no numbers:", sum())
}
Resultaat:
Sum of 1, 2, 3: 6
Sum of 4, 5: 9
Sum of no numbers: 0
Syntaxis:
func functionName(parameters ...Type) ReturnType {
// Code
}
In de bovenstaande syntaxis:
parameters ...Typegeeft aan dat de functie een variabel aantal argumenten van het type Type kan accepteren.
- U kunt argumenten in een functie benaderen als een slice.
Hoe onzekere functies in Golang te gebruiken
Variadic-functies gebruiken
Wanneer u een variadische functie definieert, geeft u het argumenttype op, gevolgd door een weglatingsteken (...), zoals in het bovenstaande voorbeeld. Binnen de functie kunnen deze argumenten worden beschouwd als een slice.
Een variadische functie aanroepen
U kunt een variadische functie aanroepen met een willekeurig aantal argumenten, ook nul. Deze functie behandelt de argumenten als een slice.
Bijvoorbeeld:
package main
import "fmt"
func sum(nums ...int) int {
total := 0
for _, n := range nums {
total += n
}
return total
}
func main() {
fmt.Println("Sum of 1, 2, 3:", sum(1, 2, 3))
fmt.Println("Sum of 4, 5:", sum(4, 5))
fmt.Println("Sum of no numbers:", sum())
}
Resultaat:
Sum of 1, 2, 3: 6
Sum of 4, 5: 9
Sum of no numbers: 0
Variadische functie met verschillende parameters
Je kunt variabele parameters ook combineren met reguliere parameters in een functie. Variadische parameters moeten altijd de laatste parameter zijn.
Bijvoorbeeld:
package main
import "fmt"
// Hàm Variadic tính tổng
func sum(nums ...int) int {
total := 0
for _, n := range nums {
total += n
}
return total
}
// Hàm với tham số thông thường và variadic
func greet(prefix string, nums ...int) {
fmt.Println(prefix)
for _, n := range nums {
fmt.Println("Number:", n)
}
}
func main() {
greet("Sum of numbers:", 1, 2, 3)
greet("Another sum:", 4, 5)
greet("No numbers sum:")
}
Resultaat:
Sum of numbers:
Number: 1
Number: 2
Number: 3
Another sum:
Number: 4
Number: 5
No numbers sum:
Beperkingen van Variadische functies
- Variadische functies kunnen slechts één variadische parameter hebben en dit moet de laatste parameter zijn.
- Er kunnen niet meerdere variabele parameters in één functiedefinitie voorkomen.