what’s variadic parameter in Go

tags: learning go programming

content

  • we have this function signature:
func First (query string, replicas ...Search) Result
  • ...Search is 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 First function, replicas behaves like []Search
    • see below replicas[i]
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
}

up

down

reference