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 Tanıtım, Öne Çıkan Kısımları Go Proverbs Kurulum Bölüm 02: Golang Uygulamasına Genel Bakış Paket Kavramı ve main Paketi Executable, Library ve Golang Uygulamasını Çalıştırmak Bölüm 03: Dil Kuralları Unicode Kavramı 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 ve case İfadeleri Label, break ve goto İşlemleri Bölüm 07: Döngüler C stili döngü range break ve continue for ve Koşul Kullanımı Label Kullanımı Bölüm 08: Interface Tanımı Tip Olarak empty interface ya da any Tip Kontrol Meknizması [Davranış Olarak interface](docs/08/01-interface.md#satisfying 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 ve errors.As panic ve recover Yaygın Pratikler Bölüm 10: nil nil Nedir? Nerelerde ve Ne İçin Kullanınır? 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 Ne İşe Yarar? Faydaları ve Zararları 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 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 projed 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. Expand ▾ Collapse ▴ Directories ¶ Show internal Expand all Path Synopsis src 02/01-init 04/05-struct-custom-tag 04/05-struct-field-access 04/05-struct-field-access-getter 04/05-struct-field-access-getter/person 04/05-struct-field-access/person 04/05-struct-field-alignment 04/05-struct-validate 11/generics-constraints 11/generics-custom-types 11/generics-function-calls 11/generics-function-calls-and-types 11/generics-function-calls-and-types2 11/generics-functions 11/generics-functions-interface 11/generics-in-maps 11/generics-in-structs 12/reflect-clearvalue 12/reflect-typecheck 13/json-custom-decode 13/json-generic-interface 13/json-marshal-custom-time 13/json-streaming 14/test-benchmarking/stringutils 14/test-code-coverage 14/test-code-coverage/greet 14/test-datarace/kvstore 14/test-greet 14/test-greet/greet 14/test-parallel/greet 14/test-setup-teardown/greet 14/test-table-driven-sub-tests/greet 14/test-table-driven/greet 15/channels/basic-goroutine-with-channel 15/channels/buffered-channels nolint:dupword nolint:dupword 15/channels/buffered-fan-out-pattern 15/channels/buffered-semaphore-pattern 15/channels/buffered-worker-pattern 15/channels/deadlock 15/channels/done-pattern 15/channels/drop-pattern 15/channels/open-close-check 15/channels/range-over-channels 15/channels/select 15/channels/send-nil 15/channels/send-only 15/channels/ticker 15/channels/unblock-send 15/channels/unblock-send-with-buffered-ch 15/context/waitgroup-channel-deadline 15/context/with-cancel 15/context/with-dead-line 15/context/with-timeout 15/context/with-value 15/mutex/atomic-done-channel 15/mutex/atomic-waitgroup 15/mutex/in-channel 15/mutex/kvstore 15/mutex/sync-map 15/waitgroup 18/basic-http-server 18/basic-mux Click to show internal directories. Click to hide internal directories.