Funções variádicas em Go permitem que você passe um número variável de argumentos para uma função. Esse recurso é útil quando você não sabe com antecedência quantos argumentos irá passar. Uma função variádica de Golang aceita vários argumentos do mesmo tipo e pode ser chamada com qualquer número de argumentos, incluindo nenhum.

package main
import "fmt"
// Hàm Variadic tính tổng
func sum(nums ...int) int {
total := 0
for _, n := range nums {
total += n
}
return total
}
func main() {
fmt.Println("Sum of 1, 2, 3:", sum(1, 2, 3))
fmt.Println("Sum of 4, 5:", sum(4, 5))
fmt.Println("Sum of no numbers:", sum())
}
Resultado:
Sum of 1, 2, 3: 6
Sum of 4, 5: 9
Sum of no numbers: 0
Sintaxe:
func functionName(parameters ...Type) ReturnType {
// Code
}
Na sintaxe acima:
parameters ...Typeindica que a função pode aceitar um número variável de argumentos do tipo Type.
- Você pode acessar argumentos em uma função como uma fatia.
Como usar funções incertas em Golang
Usando funções variádicas
Ao definir uma função variádica, você especifica o tipo de argumento seguido por reticências (...), como no exemplo acima. Dentro da função, esses argumentos podem ser considerados como uma fatia.
Chamando uma função variádica
Você pode chamar uma função variádica com qualquer número de argumentos, incluindo zero. Esta função trata os argumentos como uma fatia.
Por exemplo:
package main
import "fmt"
func sum(nums ...int) int {
total := 0
for _, n := range nums {
total += n
}
return total
}
func main() {
fmt.Println("Sum of 1, 2, 3:", sum(1, 2, 3))
fmt.Println("Sum of 4, 5:", sum(4, 5))
fmt.Println("Sum of no numbers:", sum())
}
Resultado:
Sum of 1, 2, 3: 6
Sum of 4, 5: 9
Sum of no numbers: 0
Função variádica com parâmetros diferentes
Você também pode combinar parâmetros variádicos com parâmetros regulares em uma função. Os parâmetros variádicos devem sempre ser o último parâmetro.
Por exemplo:
package main
import "fmt"
// Hàm Variadic tính tổng
func sum(nums ...int) int {
total := 0
for _, n := range nums {
total += n
}
return total
}
// Hàm với tham số thông thường và variadic
func greet(prefix string, nums ...int) {
fmt.Println(prefix)
for _, n := range nums {
fmt.Println("Number:", n)
}
}
func main() {
greet("Sum of numbers:", 1, 2, 3)
greet("Another sum:", 4, 5)
greet("No numbers sum:")
}
Resultado:
Sum of numbers:
Number: 1
Number: 2
Number: 3
Another sum:
Number: 4
Number: 5
No numbers sum:
Limitações das funções variádicas
- Funções variádicas podem ter apenas um parâmetro variádico e este deve ser o último parâmetro.
- Não é possível ter vários parâmetros variádicos em uma única definição de função.