capypad
0 Tage Serie
go / beginner
Snippet

Variadische Funktionen für flexible Argumente

Variadische Funktionen akzeptieren null oder mehr Argumente mit der `...T` Syntax. Innerhalb der Funktion wird die Variable ein Slice. Sie können auch erforderliche Parameter vor dem variadischen Teil haben. Dieses Muster ist nützlich für flexible APIs.

snippet.go
go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package main
 
import "fmt"
 
 
func sum(numbers ...int) int {
total := 0
for _, n := range numbers {
total += n
}
return total
}
 
func printNames(first string, others ...string) {
fmt.Printf("First: %s\n", first)
for _, name := range others {
fmt.Printf("Also: %s\n", name)
}
}
 
func main() {
fmt.Println("Total:", sum(1, 2, 3, 4, 5))
fmt.Println("Single:", sum(42))
fmt.Println("Empty:", sum())
printNames("Alice", "Bob", "Charlie")
}
Erklärung
1
func sum(numbers ...int) int
numbers wird zu []int mit allen übergebenen Werten
2
for _, n := range numbers
Iteriere über das Slice, das durch variadisch erstellt wurde
3
first string, others ...string
Pflichtparameter vor variadisch, others ist []string
4
sum(1, 2, 3, 4, 5)
Aufruf mit 5 Argumenten
5
sum()
Aufruf ohne Argumente, numbers ist leeres Slice