go anahtar kelimesi
- Go kursu
- Orta seviye
- Ders 2/80
- 4 dk
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
package main
import "fmt"
func main() {
// buraya yaz
}Örnek çözüm
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
Arka planda anonim fonksiyon:
____ func() {
fmt.Println("ok")
}()
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 |