Golang 101 Eğitimi
Eğitmenler: Uğur Özyılmazel, Erhan Akpınar
Katılımcılar için ön şartlar:
Herhangi bir programlama dili ile temel seviyede program yazabilme
Katılımcıların eğitime bilgisayar dışında getirmesi gereken donanım/yazılım
Bir kısım kurulum yapmaları lazım, go, docker, kod editörü.
Eğitim içeriği
- Öne Çıkan Kısımları
- Proverbs
- Go’nun Paradigması
Go uygulamasına genel bakış - Paket Kavramı
- main Paketi
- Executable ve library Kavramları
- Go Uygulamasını Çalıştırmak
Dil Kuralları - Unicode
- Anahtar Kelimeler
- Operatörler ve İşaretçiler
- Gömülü Gelen Veri Tipleri
- Kod Stili
- Sabitler
- Değişkenler
Veri Tipleri - String
- Boolean
- Nümerikler
- Array ve Slice Kavramları
- Struct
- Pointer
- Struct Metodları ve Receiver Metodlar
- Map
- Tip Dönüştürme
- Reflection
Fonksiyonlar - Signature
- Parametre / Argüman
- Return Values
- Naked Return
- Recursivity
- Closure, Anonim ve Scope
- Tip ya da Argüman olarak Fonksiyon
- defer()
Durum Kontrolleri ve Çalışma Sırası - if, else, else if
- Short Declaration if
- switch ve case
- Label ve break
- goto
Döngüler ve İterasyonlar - C style loop
- range
- break
- continue
- for ve Durum Kontrolü
- Label Kullanımı
Interface
- Tip Olarak Kullanım
- Type Checking
- Davranış Tanımı Olarak Kullanım
- Stringer
- Formatter
- Interface Satisfaction
- Interface içinde Interface (Embedding)
Error’ler - Özelleştirilmiş Error Tipleri (Custom Error Types)
- Error’leri Sarmalama (Wrapping Errors)
- Error Sarmalını Açmak (Unwrap)
- Error Değeri Kontrolü: errors.Is
- Error Tipi Kontrolü: errors.As
- En Yaygın Pratikler
- panic ve recover
nil
İsimlendirme Kuralları - Değişken Adlandırması
- Fonksiyon Adlandırması
- Metod’ların (Method) Adlandırması
- Paket İsimleri
JSON ile çalışmak - JSON Tag’leri
- Encoding (Marshal)
- Decoding (Unmarshal)
- Generic Interface
- Reference Types
- Streaming Encoders ve Decoders
Test - İlk Test
- Testlerin Tamamını ya da Bir Kısmını Çalıştırmak
- Examples ve Doküman Sunucusu
- Data Race Detection
- Table Driven Tests
- Sub Tests
- SetUp ve TearDown
- Paralel Test
- Code Coverage
- Benchmarking ve Profiling
- Escape Analysis
- Memory ve CPU Profiling Temelleri
Concurrency - Goroutine
- go func(){…}()
- sync.WaitGroup
- go func(arg T){…}(X) ve parametre
- Channels
- Unbuffered Channels
- Deadlock
- Channel value ve open/close Kontrolü
- Range over Channels
- Send İşeminin de Bloklaması
- Buffered Channels
- Semaphore Pattern
- Fan Out Pattern
- Select
- Worker Pattern
- Context
- WithTimeout
- WithCancel
- WithDeadline
- WithValue
Mutex - sync/atomic
- sync.Map
- Channel Kendi içinde Mutex Kullanır
Final
in-memory Production Grade Key-Value Store REST-API servisi yapıyoruz