Menu
Coddy logo textTech

Anonim Fonksiyonlar

Coddy'nin Golang'da Fonksiyonlar ve İşaretçiler kursunda ders 9 / 19.

Şimdiye kadar öğrendiğimiz şey, bir fonksiyonun bir isimle nasıl tanımlanacağıdır ve onu çağırmamız gerektiğinde bu ismi kullanırız. Ancak, isimsiz başka bir fonksiyon türü daha vardır ve bu türe anonim fonksiyon (anonymous function) diyoruz.

Tıpkı basit bir fonksiyon gibi davranır ancak çalışma şeklinde bazı farklılıklar vardır. Bu fonksiyonlar, başka bir yerde bir fonksiyon tanımlamaya gerek kalmadan eylemleri doğrudan tanımlamamıza olanak tanır.

Anonim bir fonksiyonun nasıl tanımlanacağına dair bir örneğe bakalım:

b := func(x, y int) int { return x - y }
fmt.Println(b(100, 50))

Burada, çıkarma işlemi yapan anonim bir fonksiyonu saklayan bir b değişkeni tanımlıyoruz. Fonksiyonu çağırdığımızda, sadece b(100, 50) değişken adını kullanırız.

Ayrıca başka bir fonksiyondan sonuç olarak anonim bir fonksiyon da alabiliriz. Örneğin:

func operation(a int) func(int) int {
    if a == 1 {
        return func(a int) int { return a + 10 }
    } else {
        return func(a int) int { return a * 10 }
    }
}
func main() {
    b := operation(1)
    fmt.Println(b(14))
}

Burada operation adında normal bir fonksiyon tanımlıyoruz ve sonuç (dönen değer) basit bir değer yerine anonim bir fonksiyon <strong>func(int) int</strong> olacaktır.

Dönen değeri bir b değişkenine atıyoruz. operation fonksiyonuna parametre olarak 1 değerini geçtiğimiz için, yürütülecek olan blok şudur:

return func(a int) int { return a + 10 }

Şimdi anonim fonksiyonumuz b'yi çağırdığımızda, bir tam sayı değeri geçmemiz gerekir, örneğin 14.

Sonuç şu olacaktır:

24

Bu, a değerini 14(<strong>b(14)</strong>) olarak geçtiğimiz a + 10 işleminin hesaplamasıdır.
 

challenge icon

Görev

Kolay

Üç tam sayı argümanı alan anonim bir fonksiyon yazın.

Eğer ilk argüman sonuncudan büyükse, tüm argümanların toplamını döndürün. Değilse, ilk ve son argümanların çarpımını döndürün.

Fonksiyonun sonucunu result adlı bir değişkenin içinde saklayın.

Kendin dene

package main

import "fmt"

func main() {
    // Anonim fonksiyonu tanımlayın ve "result" adlı bir değişkene atayın.
 
    
    
    // Sonucu yazdırın Bunu değiştirmeyin!
    fmt.Println("Result:", result(2, 3, 4))
    fmt.Println("Result:", result(8, 3, 4))
}

Golang'da Fonksiyonlar ve İşaretçiler bölümündeki tüm dersler