# Packages
No description provided by the author
# README
Mustafa Akgül Özgür Yazılım Yaz Kampı 2023
Golang 101 Kursu
Uğur Özyılmazel ve Erhan Akpınar tarafından Ağustos 2023 tarihinde verilen Golang programlama dili kursu.
Bölüm 01: Golang Hakkında Genel Bilgiler
Bölüm 02: Golang Uygulamasına Genel Bakış
Bölüm 03: Dil Kuralları
- 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
Bölüm 04: Veri Tipleri
- 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
Bölüm 05: Fonksiyonlar
- 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)
Bölüm 06: Durum Kontrolleri
if
,else
,else if
- Short
if
declaration (kısa if tanımı) switch
vecase
İfadeleri- Label,
break
vegoto
İşlemleri
Bölüm 07: Döngüler
Bölüm 08: Interface
Bölüm 09: Error
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
Bölüm 10: nil
Bölüm 11: Generics
- 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
Bölüm 12: Reflection
Bölüm 13: JSON İle Çalışmak
- Genel Bilgi
- Encoding (Marshal)
- Decoding (Unmarshal)
json:"TAG"
- Custom Decoding
- Custom Encoding
- Generic Interface
- Streaming Encoders ve Decoders
Bölüm 14: Test
- 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
Bölüm 15: Concurrency
- 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
Bölüm 16: İsimlendirme Kuralları
- Naming Conventions
- Değişken İsimlendirmesi
- Fonksiyon İsimlendirmesi
- Method’ların İsimlendirmesi
- Interface’lerin İsimlendirmesi
- Paketlerin İsimlendirmesi
Bölüm 17: Golang Paketi Geliştirmek
golangci-linter
Kurulumu ve Konfigürasyonu- Go Modülü Anatomisi
stringutils
Paketi- Paketi Dağıtmak / Paylaşmak
Bölüm 18: In-Memory Key-Value Store
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
Bonus
Quiz
mkdocs
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
Katkı
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.
Lisans
Bu projede MIT lisansı kullanılmıştır.
Katkıcı Ahdi Topluluk Sözleşmesi
Bu projenin kaynak kodunda, sorun izleyicilerinde, sohbet odalarında ve posta listelerinde etkileşimde bulunan herkesin davranış kurallarına uyması beklenir.