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
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 mainimport "fmt"func sum(numbers ...int) int {total := 0for _, 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 := basefor _, 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