what’s variadic parameter in Go
tags: learning go programming
content
- we have this function signature:
func First (query string, replicas ...Search) Result...Searchis variadic parameter- it means the function is expecting any number of
replicas - below function calls are all valid
First("my query")
First("my query", searchEngine1)
First("my query", searchEngine1, searchEngine2)- inside the
Firstfunction, replicas behaves like[]Search- see below
replicas[i]
- see below
func First(query string, replicas ...Search) Result {
c := make(chan Result)
searchReplica := func(i int) { c <- replicas[i](query) }
for i := range replicas {
// launching all `Search` replicas in Goroutine
go searchReplica(i)
}
return <-c
}