capypad
0 Tage Serie
go / beginner
Snippet

Variadische Funktionen: Flexible Argumentverarbeitung

Variadische Funktionen akzeptieren eine beliebige Anzahl von Argumenten desselben Typs. Die ...-Syntax vor dem Typparameter macht eine Funktion variadisch. Innerhalb der Funktion wird die Variable als Slice empfangen. Du kannst einzelne Argumente übergeben oder einen Slice mit dem ...-Operator entpacken. Dieses Muster ist nützlich für Logging, Formatierung und Utility-Funktionen.

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
27
28
29
30
31
32
33
34
35
36
37
package main
 
import "fmt"
 
func sum(numbers ...int) int {
total := 0
for _, n := range numbers {
total += n
}
return total
}
 
func greet(greeting string, names ...string) {
for _, name := range names {
fmt.Printf("%s, %s!\n", greeting, name)
}
}
 
func combine(base string, parts ...string) string {
result := base
for _, part := range parts {
result += "|" + part
}
return result
}
 
func main() {
fmt.Println("Sum:", sum(1, 2, 3, 4, 5))
fmt.Println("Sum of no numbers:", sum())
 
greet("Hello", "Alice", "Bob", "Charlie")
 
fmt.Println("Combined:", combine("Start", "A", "B", "C"))
 
nums := []int{10, 20, 30}
fmt.Println("Slice sum:", sum(nums...))
}
Erklärung
1
func sum(numbers ...int) int
Deklariert eine variadische Funktion, die null oder mehr int-Argumente akzeptiert
2
for _, n := range numbers
Der variadische Parameter ist ein Slice innerhalb der Funktion, also funktioniert range darauf
3
greet("Hello", "Alice", "Bob")
Kann eine beliebige Anzahl von String-Argumenten nach dem erforderlichen ersten Parameter übergeben
4
nums := []int{10, 20, 30}; sum(nums...)
Das ... entpackt einen Slice in einzelne Argumente für die variadische Funktion