Uğur Özyılmazel ve Erhan Akpınar tarafından Ağustos 2023 tarihinde verilen Golang programlama dili kursu.
- Encoding Nedir?
- Unicode Desteği
- Anahtar Kelimeler
- Operatörler ve İşaretçiler
- Built-in (gömülü gelen) Veri Tipleri
- Kod Stili
- Sabitler
- Değişkenler
- Strings (metinseller)
- Booleans (mantıksallar)
- Numerics (sayısallar)
- Arrays (diziler)
- Slices (dizi kesitleri)
- Structs (yapılar)
- Struct Annotations
- Pointer (işaretçi) Kavramı
- Struct Methods ve Receivers
- Maps
- Tip Dönüştürmek
- Function Signature (fonksiyon imzası)
- Argüman / Parametre
- Return Values (fonksiyodan geriye dönen değerler)
- Recursivity (özyineleme)
- Closure / Anonim Fonksiyonlar ve Function Scope (kapsama alanı)
- Deferring (erteleme)
if
,else
,else if
- Short
if
declaration (kısa if tanımı) switch
vecase
İfadeleri- Label,
break
vegoto
İşlemleri
error
Nedir?- Custom Error Types (özelleştirilmiş error tipi oluşturmak)
- Wrapping (sarmalama)
- Unwrapping (sarmalı açma)
error
Tip Kontrolleri:errors.Is
veerrors.As
panic
verecover
- Yaygın Pratikler
- Nedir? Ne Amaçla Kullanılır
- Fonksiyonlarda Genericler
- Custom Tiplerde Generic
- Generic Fonksiyon Çağrıları
- Generic Tipi struct’da Kullanmak
- Generic Tipi map’lerde Kullanmak
- Generic Gerçek Hayat Örneği
- Genel Bilgi
- Encoding (Marshal)
- Decoding (Unmarshal)
json:"TAG"
- Custom Decoding
- Custom Encoding
- Generic Interface
- Streaming Encoders ve Decoders
- Test Nedir? Neden Yazılır?
- Test Nasıl Çalıştırılır
- Examples ve
godoc
Nedir? - Race Detection Nedir?
- Table Driven Test Nedir?
- Sub Tests
- SetUp ve TearDown Nedir?
- Testlerin Paralel Çalıştırılması?
- Code Coverage Nedir?
- Benchmarking Nedir?
- Escape Analysis
- Memory ve CPU Profiling Temelleri
- Nedir? Golang’in Concurrency Stratejisi Nedir?
- Goroutine Nedir?
go
Kelimesiyle Başlayan Anonim Fonksiyonlar- WaitGroup Nedir?
- Channels
done
Pattern- Deadlock
- Range Over Channels
- Buffered Channels
- Semaphore Pattern
- Fan Out Pattern
select
- Ticker
- Worker Pattern
- Mutex Nedir?
- Context
- Naming Conventions
- Değişken İsimlendirmesi
- Fonksiyon İsimlendirmesi
- Method’ların İsimlendirmesi
- Interface’lerin İsimlendirmesi
- Paketlerin İsimlendirmesi
golangci-linter
Kurulumu ve Konfigürasyonu- Go Modülü Anatomisi
stringutils
Paketi- Paketi Dağıtmak / Paylaşmak
http
Paketini Kullanarak Rest-API Tasarlamak- Domain Driven Design prensibini Kullanmak
- Geliştirme
- http server’ın Unit Testleri
- Uygulamanın Docker Container’ından Çalıştırılması
- GitHub Actions ile Linter/Checker Kullanımı
- Açık Kaynak Haline Getirmek
Otomatik doküman oluşturmak için;
pip install -r requirements.txt
rake -T
rake mkdocs:build # build docs
rake mkdocs:deploy # deploy to GitHub
rake mkdocs:serve # run docs server
rake release[revision] # release new version major,minor,patch, default: patch
Hata raporları ve katkı istekleri, https://github.com/vbyazilim/maoyyk2023-golang-101-kursu adresindeki GitHub ortamında herkese açıktır. Bu projenin, işbirliği için güvenli ve davetkar bir alan olması amaçlanmıştır ve katkıda bulunanların Katkıcı Ahdi Topluluk Sözleşmesi davranış kurallarına uyması beklenir.
Bu projede MIT lisansı kullanılmıştır.
Bu projenin kaynak kodunda, sorun izleyicilerinde, sohbet odalarında ve posta listelerinde etkileşimde bulunan herkesin davranış kurallarına uyması beklenir.