Skip to content

vbyazilim/maoyyk2023-golang-101-kursu

Repository files navigation

Version Go Version Powered by Rake

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

  1. Tanıtım, Öne Çıkan Kısımları
  2. Go Proverbs
  3. Kurulum
  4. VSCode Kurulumu

Bölüm 02: Golang Uygulamasına Genel Bakış

  1. Paket Kavramı ve main Paketi
  2. Executable, Library ve Golang Uygulamasını Çalıştırmak

Bölüm 03: Dil Kuralları

  1. Encoding Nedir?
  2. Unicode Desteği
  3. Anahtar Kelimeler
  4. Operatörler ve İşaretçiler
  5. Built-in (gömülü gelen) Veri Tipleri
  6. Kod Stili
  7. Sabitler
  8. Değişkenler

Bölüm 04: Veri Tipleri

  1. Strings (metinseller)
  2. Booleans (mantıksallar)
  3. Numerics (sayısallar)
  4. Arrays (diziler)
  5. Slices (dizi kesitleri)
  6. Structs (yapılar)
  7. Struct Annotations
  8. Pointer (işaretçi) Kavramı
  9. Struct Methods ve Receivers
  10. Maps
  11. Tip Dönüştürmek

Bölüm 05: Fonksiyonlar

  1. Function Signature (fonksiyon imzası)
  2. Argüman / Parametre
  3. Return Values (fonksiyodan geriye dönen değerler)
  4. Recursivity (özyineleme)
  5. Closure / Anonim Fonksiyonlar ve Function Scope (kapsama alanı)
  6. Deferring (erteleme)

Bölüm 06: Durum Kontrolleri

  1. if, else, else if
  2. Short if declaration (kısa if tanımı)
  3. switch ve case İfadeleri
  4. Label, break ve goto İşlemleri

Bölüm 07: Döngüler

  1. C stili döngü
  2. range
  3. break ve continue
  4. for ve Koşul Kullanımı
  5. Label Kullanımı

Bölüm 08: Interface

  1. Tanımı
  2. Tip Olarak empty interface ya da any
  3. Tip Kontrol Meknizması
  4. Davranış Olarak interface

Bölüm 09: Error

  1. error Nedir?
  2. Custom Error Types (özelleştirilmiş error tipi oluşturmak)
  3. Wrapping (sarmalama)
  4. Unwrapping (sarmalı açma)
  5. error Tip Kontrolleri: errors.Is ve errors.As
  6. panic ve recover
  7. Yaygın Pratikler

Bölüm 10: nil

  1. nil Nedir?
  2. Nerelerde ve Ne İçin Kullanınır?

Bölüm 11: Generics

  1. Nedir? Ne Amaçla Kullanılır
  2. Fonksiyonlarda Genericler
  3. Custom Tiplerde Generic
  4. Generic Fonksiyon Çağrıları
  5. Generic Tipi struct’da Kullanmak
  6. Generic Tipi map’lerde Kullanmak
  7. Generic Gerçek Hayat Örneği

Bölüm 12: Reflection

  1. Ne İşe Yarar? Faydaları ve Zararları

Bölüm 13: JSON İle Çalışmak

  1. Genel Bilgi
  2. Encoding (Marshal)
  3. Decoding (Unmarshal)
  4. json:"TAG"
  5. Custom Decoding
  6. Custom Encoding
  7. Generic Interface
  8. Streaming Encoders ve Decoders

Bölüm 14: Test

  1. Test Nedir? Neden Yazılır?
  2. Test Nasıl Çalıştırılır
  3. Examples ve godoc Nedir?
  4. Race Detection Nedir?
  5. Table Driven Test Nedir?
  6. Sub Tests
  7. SetUp ve TearDown Nedir?
  8. Testlerin Paralel Çalıştırılması?
  9. Code Coverage Nedir?
  10. Benchmarking Nedir?
  11. Escape Analysis
  12. Memory ve CPU Profiling Temelleri

Bölüm 15: Concurrency

  1. Nedir? Golang’in Concurrency Stratejisi Nedir?
  2. Goroutine Nedir?
  3. go Kelimesiyle Başlayan Anonim Fonksiyonlar
  4. WaitGroup Nedir?
  5. Channels
  6. done Pattern
  7. Deadlock
  8. Range Over Channels
  9. Buffered Channels
  10. Semaphore Pattern
  11. Fan Out Pattern
  12. select
  13. Ticker
  14. Worker Pattern
  15. Mutex Nedir?
  16. Context

Bölüm 16: İsimlendirme Kuralları

  1. Naming Conventions
  2. Değişken İsimlendirmesi
  3. Fonksiyon İsimlendirmesi
  4. Method’ların İsimlendirmesi
  5. Interface’lerin İsimlendirmesi
  6. Paketlerin İsimlendirmesi

Bölüm 17: Golang Paketi Geliştirmek

  1. golangci-linter Kurulumu ve Konfigürasyonu
  2. Go Modülü Anatomisi
  3. stringutils Paketi
  4. Paketi Dağıtmak / Paylaşmak

Bölüm 18: In-Memory Key-Value Store

  1. http Paketini Kullanarak Rest-API Tasarlamak
  2. Domain Driven Design prensibini Kullanmak
  3. Geliştirme
  4. http server’ın Unit Testleri
  5. Uygulamanın Docker Container’ından Çalıştırılması
  6. GitHub Actions ile Linter/Checker Kullanımı
  7. Açık Kaynak Haline Getirmek

Bonus

  1. Faydalı Linkler
  2. kvstore

Quiz

  1. Quiz 1

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.