Özet - Fonksiyonlar
- Go kursu
- Başlangıç
- Ders 34/90
- 4 dk
Ç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
// bittiDefer'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
package main
import "fmt"
func main() {
// buraya yaz
}Örnek çözüm
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
func oku() {
____ fmt.Println("dosya kapandı")
fmt.Println("okunuyor")
}
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 |