CodeBlanks Logo Icon CodeBlanks

go anahtar kelimesi

go anahtar kelimesiyle fonksiyonu arka planda çalıştırmayı öğrenirsin.

go anahtar kelimesi

go anahtar kelimesi bir fonksiyon çağrısını goroutine olarak başlatır. Çağrı hemen döner; fonksiyon arka planda çalışmaya devam eder. Ana program beklemeden bir sonraki satıra geçer.

Örnek: go doWork() doWork fonksiyonunu arka planda başlatır. Eğer fonksiyon değer döndürüyorsa, dönüş değerini doğrudan alamazsın; channel veya shared state gerekir.

Birden çok go ile paralel iş başlatabilirsin. Ancak ana program (main) sona ererse tüm goroutine'ler de biter; bu yüzden senkronizasyon önemlidir.

go ve anonim fonksiyon

Sıkça go ile anonim fonksiyon (closure) kullanılır: go func() { ... }(). Bu, küçük bir parça kodu arka planda çalıştırmanın en kısa yoludur.

Anonim fonksiyon dış değişkenleri yakalayabilir (closure). Ancak döngü değişkeni yakalarken dikkat et: her yineleme aynı değişkeni paylaşır. Parametre olarak geçmek güvenlidir.

Go 1.22 ile döngü değişkeni artık her yineleme için ayrı oluşturulur; bu yaygın tuzağı çözer.

Uygulama Anonim goroutine yaz

main içine bir go func(){...}() ifadesi ve fmt.Println ile anonim çalıştı 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 main() {
    go func() {
        fmt.Println("anonim çalıştı")
    }()
    fmt.Println("anonim çalıştı")
}

Beklenen çıktı

anonim çalıştı

Soru ve cevaplar

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

1 go doWork() çağrısı ne döndürür?

  • doWork'ün dönüş değerini
  • Bir channel
  • Hemen döner, değer beklemez Doğru cevap
  • Bir hata

Açıklama: hemen döner. Goroutine dönüş değeri doğrudan alınamaz.

2 Anonim goroutine

Soru
Arka planda anonim fonksiyon:
____ func() {
    fmt.Println("ok")
}()
Cevap
Arka planda anonim fonksiyon:
go func() {
    fmt.Println("ok")
}()

Açıklama: func fonksiyon tanımlar, go başlatır.

3 go kullanımlarını eşleştir

Kavram Anlamı
go f() Fonksiyon goroutine
go func(){}() Anonim goroutine
go Anahtar kelime
main Ana goroutine

Orta seviye bölümündeki tüm dersler