Variadic fonksiyonlar
- Go kursu
- Başlangıç
- Ders 32/90
- 4 dk
... operatörüyle değişken sayıda parametre almayı öğrenirsin.
Variadic fonksiyonlar
Son parametrenin türünden önce ... yazılırsa fonksiyon o türden istediğin kadar argüman alır; içeride bir dilim olarak görünür:
func topla(sayilar ...int) int {
t := 0
for _, n := range sayilar {
t += n
}
return t
}
fmt.Println(topla(1, 2, 3)) // 6
fmt.Println(topla()) // 0fmt.Println da variadic bir fonksiyondur.
Kurallar
Variadic parametre yalnızca son parametre olabilir: func yaz(onEk string, degerler ...int). Hiç argüman verilmezse dilim nil'dir ve len sıfırdır. append(s, diger...) da aynı açma sözdizimini kullanır.
Uygulama Ortalama
ortalama(sayilar ...float64) float64 yaz; argüman yoksa 0 döndürsün. ortalama(2, 4, 9) sonucunu yazdır.
Başlangıç kodu
package main
import "fmt"
func main() {
// buraya yaz
}Örnek çözüm
package main
import "fmt"
func ortalama(sayilar ...float64) float64 {
if len(sayilar) == 0 {
return 0
}
t := 0.0
for _, n := range sayilar {
t += n
}
return t / float64(len(sayilar))
}
func main() {
fmt.Println(ortalama(2, 4, 9))
}Beklenen çıktı
5
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Elindeki bir dilimi variadic fonksiyona nasıl verirsin?
- topla(...liste)
- topla(*liste)
- topla(liste...) Doğru cevap
- topla(liste)
Açıklama: Dilimin ardına ... yazmak onu tek tek argümanlara açar; yalnızca liste yazmak tür hatası verir.
2 Dilimi aç
liste := []int{4, 5, 6}
fmt.Println(topla(liste____))
liste := []int{4, 5, 6}
fmt.Println(topla(liste...))
Açıklama: liste... dilimi variadic parametreye tek tek argüman olarak verir.
3 Çağrı ve sonuç
| Kavram | Anlamı |
|---|---|
topla(1, 2, 3) |
6 |
topla() |
0 |
topla([]int{4, 5}...) |
9 |
topla(10) |
10 |