CodeBlanks Logo Icon CodeBlanks

Özet - Fonksiyonlar

Çoklu dönüş ve variadic parametrelerle bir yardımcı yazarsın.

Fonksiyonlar özeti

Bu grupta func ad(parametreler) dönüş sözdizimini, değerle geçirmeyi, (sonuç, error) gibi çoklu dönüşü, adlandırılmış dönüşü, ... ile variadic parametreleri, anonim fonksiyonları ve kapanışları öğrendin.

func uygula(s []int, f func(int) int) []int {
    sonuc := make([]int, len(s))
    for i, v := range s {
        sonuc[i] = f(v)
    }
    return sonuc
}

Fonksiyon alan fonksiyonlar (yüksek mertebe) tekrar eden döngüleri tek yerde toplar.

defer

defer bir çağrıyı fonksiyon bitene kadar erteler; birden çok defer ters sırayla (son giren ilk çıkar) çalışır. Dosya kapatma, kilit açma gibi temizlik işleri için kullanılır:

func islem() {
    defer fmt.Println("bitti")
    fmt.Println("çalışıyor")
}
// çalışıyor
// bitti

Defer'in argümanları defer satırı çalıştığı anda hesaplanır, çağrının kendisi sonda yapılır.

Uygulama Yüksek mertebe fonksiyon

Yukarıdaki uygula fonksiyonunu yaz. uygula([]int{1, 2, 3}, func(n int) int { return n * n }) 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 uygula(s []int, f func(int) int) []int {
    sonuc := make([]int, len(s))
    for i, v := range s {
        sonuc[i] = f(v)
    }
    return sonuc
}

func main() {
    fmt.Println(uygula([]int{1, 2, 3}, func(n int) int { return n * n }))
}

Beklenen çıktı

[1 4 9]

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 <code>uygula([]int{1, 2}, func(n int) int { return n + 10 })</code> ne döndürür?

  • [11 12] Doğru cevap
  • [1 2]
  • 23
  • [10 10]

Açıklama: uygula her elemana verilen fonksiyonu uygular: 1+10, 2+10.

2 Ertele

Soru
func oku() {
    ____ fmt.Println("dosya kapandı")
    fmt.Println("okunuyor")
}
Cevap
func oku() {
    defer fmt.Println("dosya kapandı")
    fmt.Println("okunuyor")
}

Açıklama: defer çağrıyı fonksiyonun sonuna erteler.

3 Grubun özeti

Kavram Anlamı
func ... Tanım
(int, error) Çoklu dönüş
...int Variadic
defer Sona erteleme

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