Mert Özen Her Satırda Daha İleri

Blog

Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.

Seriler
19 yazı bulundu #go
Goroutine ve Channel: Go'nun Concurrency Modeli
Backend SERİ 07

Goroutine ve Channel: Go'nun Concurrency Modeli

Goroutine, runtime'ın az sayıda OS thread'ine dağıttığı ve 2 KB stack ile başlayan ucuz bir çalışma birimidir; channel ise iki goroutine'in buluştuğu, queue gibi davranmayan bir iletişim noktasıdır. 100.000 goroutine'in maliyeti, G-M-P scheduler'ı, async/await olmadan asenkron kod, unbuffered ve buffered channel, select ve timeout, nil/kapalı channel tablosu, Bookstore'da fan-out/fan-in ile stok kontrolü ve goroutine leak.

15 Kas 2026 14 dk 7
Go Generics ve Iterator'lar: Type Parameter, Constraint, range-over-func ve Generic Method'lar
Backend SERİ 06

Go Generics ve Iterator'lar: Type Parameter, Constraint, range-over-func ve Generic Method'lar

Go'da constraint bir tip kümesidir: ~int64 yazmadığın sürece Money gibi isimli bir tip int64 isteyen generic fonksiyona verilemez. Bookstore'da generic Page[T] ile sayfalama, cmp.Ordered ve comparable, C# generics'ten farklar (variance yok, GC shape stenciling), iter.Seq ile kitapları yazara göre gruplayan iterator, yield tuzağı, LINQ zihniyetiyle kıyas ve Go 1.27'nin generic method'ları.

15 Kas 2026 17 dk 5
Go'da Error Handling: error Değerleri, Wrapping, errors.Is/As/AsType ve panic
Backend SERİ 05

Go'da Error Handling: error Değerleri, Wrapping, errors.Is/As/AsType ve panic

Go'da hata bir dönüş değeridir: sentinel error'lar errors.Is ile, custom error tipleri errors.As ya da Go 1.26'daki errors.AsType ile tanınır, %w ise zinciri koruyarak bağlam ekler. Bookstore'da ErrOutOfStock ve ValidationError, errors.Join ile toplu doğrulama, pointer error'ı %w ile sarma tuzağı ve onu yakalayan Go 1.27 vet kontrolü, hatayı 404'e çevirmek, handler'daki panic'in boş cevap üretmesi ve recover middleware'i.

15 Kas 2026 15 dk 5
Go'da Struct, Method ve Interface: Class'sız OOP, Embedding ve Implicit Interface
Backend SERİ 04

Go'da Struct, Method ve Interface: Class'sız OOP, Embedding ve Implicit Interface

Go'da class yok: veri struct'ta, davranış method'larda durur; state değiştiren method pointer receiver ister, interface'ler ise implicit'tir ve onu kullanan tarafta küçük tanımlanır. Bookstore'un sipariş modeli (NewOrder, Timestamps embedding'i, MarkPaid), orders.Repository ile memstore ve sqlstore, accept interfaces return structs, Stringer, type switch, method set hatası ve staticcheck'in yakaladığı nil interface tuzağı.

15 Kas 2026 15 dk 5
Go Temelleri: Tipler, Zero Value, Slice, Map, Pointer ve Kontrol Akışı
Backend SERİ 03

Go Temelleri: Tipler, Zero Value, Slice, Map, Pointer ve Kontrol Akışı

Go'da slice; pointer, len ve cap'ten oluşan küçük bir header'dır ve alt slice'lar aynı backing array'i paylaşır, bu yüzden books[:0] üzerinde çalışan bir filtre orijinal kataloğu bozar. Zero value felsefesi, iota ile sabitler, string/byte/rune farkı ve Türkçe karakterde len tuzağı, append'in kapasiteyi büyütmesi, nil map ve rastgele map sırası, pointer ve Go 1.26'nın new(expr)'i, 1.22 döngü değişkeni ve nil slice'ın JSON'da null olması.

15 Kas 2026 16 dk 4
Go Kurulumu, Module'ler ve Proje Yapısı: go.mod, Package'lar, internal/ ve cmd/
Backend SERİ 02

Go Kurulumu, Module'ler ve Proje Yapısı: go.mod, Package'lar, internal/ ve cmd/

Go'da bir module go.mod ile tanımlanır: go satırı Go 1.21'den beri bağlayıcı bir minimum sürümdür, go.sum her bağımlılığın hash'ini tutar, indirmeler proxy.golang.org ve sum.golang.org üzerinden doğrulanır. go mod init'in yazdığı sürümün hikâyesi, toolchain satırı ve GOTOOLCHAIN, tool directive ile staticcheck, büyük harfle export, internal/ ve cmd/ yapısı, go work, go mod tidy -diff ve Go 1.27'de require bloklarının ikiye toplanması.

15 Kas 2026 13 dk 6
Go Nedir, Neden Var? C# Geliştiricisi için Go'nun Felsefesi, Toolchain'i ve Ne Zaman Seçilir
Backend SERİ 01

Go Nedir, Neden Var? C# Geliştiricisi için Go'nun Felsefesi, Toolchain'i ve Ne Zaman Seçilir

Go, Google'da büyük codebase'lerin yavaş build'ine ve karmaşıklığına cevap olarak doğmuş, az özellikli, native koda derlenen ve runtime'ı binary'nin içinde taşıyan bir dil. İki endpoint'li Bookstore servisinin Windows için 9,9 MB'lık tek .exe olması, 10 ms'de açılıp 12 MB kullanması, ASP.NET Core ile karşılaştırma tablosu, go build/vet/fmt/fix/doc, cross-compile, altı aylık release politikası ve Go'yu ne zaman seçmen gerektiği.

15 Kas 2026 14 dk 7
Blog Haritası