CodeBlanks Logo Icon CodeBlanks

Variadic fonksiyonlar

... 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())         // 0

fmt.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

main.go
package main

import "fmt"

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
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ç

Soru
liste := []int{4, 5, 6}
fmt.Println(topla(liste____))
Cevap
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

Başlangıç bölümündeki tüm dersler