Skip to content

Commit 00610be

Browse files
committed
adding variadic functions
1 parent 60fb5c0 commit 00610be

File tree

3 files changed

+28
-2
lines changed

3 files changed

+28
-2
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ all the examples `Run` functions sequentially in line with the table of contents
2424
* [10 - Maps](maps/main.go)
2525
* [11 - Range](ranges/main.go)
2626
* [12 - Functions](functions/main.go)
27+
* [13 - Variadic Functions](variadicfunctions/main.go)
2728
* [25 - Timers](timers/main.go)
2829
* [26 - Tickers](tickers/main.go)
2930
* [27 - WorkerGroups](workergroups/main.go)

main.go

+5-2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"github.com/symonk/learning-golang/arrays"
99
"github.com/symonk/learning-golang/constants"
1010
"github.com/symonk/learning-golang/forloop"
11+
"github.com/symonk/learning-golang/functions"
1112
"github.com/symonk/learning-golang/helloworld"
1213
"github.com/symonk/learning-golang/ifelse"
1314
"github.com/symonk/learning-golang/maps"
@@ -22,7 +23,7 @@ import (
2223
)
2324

2425
var (
25-
functions = []func(){
26+
allFunctions = []func(){
2627
helloworld.Run,
2728
values.Run,
2829
variables.Run,
@@ -37,13 +38,15 @@ var (
3738
timers.Run,
3839
tickers.Run,
3940
workergroups.Run,
41+
functions.Run,
42+
variables.Run,
4043
}
4144
)
4245

4346
func main() {
4447
/* Run all modules synchronously. Modules have avoided builtins and are occassionally
4548
pluralised in their naming, i.e switches. */
46-
for _, callable := range functions {
49+
for _, callable := range allFunctions {
4750
fmt.Println("-----")
4851
fmt.Printf("Executing %s\n", runtime.FuncForPC(reflect.ValueOf(callable).Pointer()).Name())
4952
callable()

variadicfunctions/main.go

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package variadicfunctions
2+
3+
import "fmt"
4+
5+
func Run() {
6+
fmt.Println(sumOfVariableArgs(1, 2, 3, 4, 5)) // 15
7+
slice := []int{9, 9, 9}
8+
fmt.Println(sumOfVariableArgs(slice...)) // 27
9+
}
10+
11+
/*
12+
This is an example of a variadic function.
13+
14+
One that accepts a variable number of arguments
15+
*/
16+
func sumOfVariableArgs(args ...int) int {
17+
total := 0
18+
for arg := range args {
19+
total += arg
20+
}
21+
return total
22+
}

0 commit comments

Comments
 (0)