Go'daki değişkenli fonksiyonlar, bir fonksiyona değişken sayıda argüman geçirmenize olanak tanır. Bu özellik, önceden kaç argüman ileteceğinizi bilmediğinizde kullanışlıdır. Bir Golang değişkenli fonksiyonu aynı tipte birden fazla argüman kabul eder ve hiç argüman olmadan da herhangi bir sayıda argümanla çağrılabilir.

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())
}
Sonuç:
Sum of 1, 2, 3: 6
Sum of 4, 5: 9
Sum of no numbers: 0
Sözdizimi:
func functionName(parameters ...Type) ReturnType {
// Code
}
Yukarıdaki sözdiziminde:
parameters ...Type
fonksiyonun Type türünde değişken sayıda argüman kabul edebileceğini belirtir.
- Bir fonksiyondaki argümanlara dilim olarak erişebilirsiniz.
Golang'da belirsiz fonksiyonlar nasıl kullanılır
Variadic fonksiyonları kullanma
Değişkenli bir fonksiyon tanımlarken, yukarıdaki örnekte olduğu gibi argüman türünü üç nokta (...) ile belirtirsiniz. Fonksiyonun içerisinde bu argümanlar bir dilim olarak düşünülebilir.
Değişkenli bir fonksiyonu çağırma
Sıfır dahil olmak üzere herhangi bir sayıda argümanla değişkenli bir fonksiyonu çağırabilirsiniz. Bu fonksiyon argümanları bir dilim olarak ele alır.
Örneğin:
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())
}
Sonuç:
Sum of 1, 2, 3: 6
Sum of 4, 5: 9
Sum of no numbers: 0
Farklı parametrelere sahip değişkenli fonksiyon
Bir fonksiyon içerisinde değişkenli parametreleri normal parametrelerle birleştirebilirsiniz. Değişkenli parametreler her zaman son parametre olmalıdır.
Örneğin:
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:")
}
Sonuç:
Sum of numbers:
Number: 1
Number: 2
Number: 3
Another sum:
Number: 4
Number: 5
No numbers sum:
Variadic fonksiyonların sınırlamaları
- Değişkenli fonksiyonların yalnızca bir değişkenli parametresi olabilir ve bu parametre mutlaka son parametre olmalıdır.
- Tek bir fonksiyon tanımında birden fazla değişkenli parametre olamaz.