İnteraktif kurs
Kursa Git
Go'yu İngilizce olarak sıfırdan öğrenin. Kodunuzu gerçek derleyicide çalıştırmak için statik doğrulamalı alıştırmalar ve resmi Go Playground'a doğrudan bağlantılar.
Anahtar kelimeler + görevli üzerinde yürütme yoluyla statik doğrulamaGo Playground(kopyalama kodu için tek tıklama + açma).
01 · Modül 1 — Dilin temelleri
Temeller: fmt paketiyle paketler, değişkenler, türler, sabitler, operatörler ve giriş/çıkış.
- 1.1Değişkenler ve türlervar, kısa bildirim `:=`, temel türler (int, float64, string, bool) ve statik yazma kavramı.~10 min
- 1.2Sıfır değer ve tür dönüşümleriHer değişkenin varsayılan bir değeri vardır; dönüşümler açıktır (`int(x)`, `string(b)`).~10 min
- 1.3Sabitler ve iotaOkunabilir numaralandırmalar oluşturmak için 'const', türlenmemiş sabitler ve 'iota' modeli.~10 min
- 1.4OperatörlerAritmetik, karşılaştırma, mantıksal ve bitsel; Diğer dillerden üstünlükleri ve farklılıkları.~8 min
- 1.5Fmt ile giriş/çıkış`fmt.Println`, `fmt.Printf`, fiilleri biçimlendir (“%d`, `%s`, `%v`, `%T`) ve birinin diğerine ne zaman tercih edileceği.~10 min
02 · Modül 2 — Kontrol akışı
Kararlar ve tekrarlar: init ifadeleri varsa, tek "for", deyimsel anahtar ve açık hata işleme.
- 2.1if, else ve init ifadeleri`if v := f(); v > 0 { ... }` formu ve Go'nun neden üçlü operatörü olmadığı.~10 min
- 2.2for: tek döngü'For'un üç biçimi: üç yan tümce, tek koşul (= while) ve sonsuz; 'break' ve 'continue' kullanarak.~10 min
- 2.3... aralığı içinDilimler, haritalar ve dizeler üzerinde yineleme yapın; döndürülen değer bir kopyadır; indeks veya "_" ile gösterilen değer göz ardı edilir.~10 min
- 2.4Deyimsel anahtarÖrtük bir geçiş yok, durumlarda karmaşık ifadeler var, bir if zinciri olarak koşul olmadan geçiş yapılıyor.~10 min
- 2.5Hatalar: "if err != sıfır" modeliHatalar değerlerdir; temel kalıp `if err != nil { return err }' ve Go'nun neden istisnası olmadığı.~12 min
03 · Modül 3 — Fonksiyonlar
Birinci sınıf vatandaşlar olarak işlevler: imzalar, çoklu geri dönüşler, değişken parametreler, kapanışlar ve "erteleme".
- 3.1İmza ve parametreler'işlev adı (p türü) türü' sözdizimi, varsayılan olarak değere göre geçiş, aynı türdeki parametreler birlikte gruplandırılmıştır.~10 min
- 3.2Çoklu iadeler ve adlandırılmış iadelerBirden fazla değerin döndürülmesi ("değer, hata"), adlandırılmış dönüş modeli ve ne zaman kullanılmaması gerektiği.~12 min
- 3.3Değişken işlevler'func sum(nums ...int) int', 'slice...' ile bir dilimi yayma, stdlib'den örnekler.~10 min
- 3.4Değer olarak kapanışlar ve işlevlerÇevredeki bağlamdan değişkenleri yakalayan anonim işlevler; adaptör ve fabrika modelleri.~12 min
- 3.5'erteleme': garantili temizlemeİnfazı dönüşe kadar erteleyin; 'defer f.Close()' modeli, LIFO sırası, döngülerin içindekiler.~12 min
04 · Modül 4 – Koleksiyonlar
Diziler, dilimler (en önemli yapı), haritalar, dizelerin içindeki runeler ve sıralama.
- 4.1Sabit uzunluklu diziler'[N]T' sözdizimi, Go'da gerçek dizilerin neden nadiren kullanıldığı, diziden dilime dönüşüm.~8 min
- 4.2Dilimler: deyimsel yapı"make", "append", len/cap, "s[a:b]" dilimleme, temel diziyi paylaşma ve ne zaman kopyalanacağı.~15 min
- 4.3Haritalar: anahtarlar ve değerlerBildirim, virgül-tamam erişimi (`v, tamam := m[k]`), 'sil', deterministik olmayan yineleme.~12 min
- 4.4Dizeler, baytlar ve runelarDizeler UTF-8 bayttır; 'menzil' rünleri verir; `len()` karakterleri değil baytları sayar.~12 min
- 4.5Sıralama paketiyle sıralama`sort.Ints`, `sort.Strings`, `sort.Slice` karşılaştırma işleviyle, kararlılık.~10 min
05 · Modül 5 — Yapılar ve yöntemler
Bileşik veri türleri: yapılar, değer veya işaretçi alıcılarına ilişkin yöntemler, bileşim (kalıtım yok) ve etiketler.
- 5.1Yapıyı tanımlama ve kullanma`type Kişi yapısı { Ad dizesi; Age int }`, konumsal ve adlandırılmış başlatma, anonim yapılar.~12 min
- 5.2Yöntemler: değer ve işaretçi alıcısı`func (p Kişi) Merhaba()` vs `func (p *Kişi) Yeniden Adlandır(n string)`; birini veya diğerini ne zaman kullanacağınızı.~14 min
- 5.3Kompozisyon (yerleştirme)Go'nun kalıtımı yoktur: bir türü diğerinin içine yerleştirerek oluşturursunuz. Yöntem promosyonu.~12 min
- 5.4Alan etiketleri ve JSON`json:"name,omitempty"`, `encoding/json` ile sıralama/sıralamayı kaldırma, yaygın hatalar.~12 min
- 5.5'Yeni...' yapıcı modeliGo'nun yapıcısı yoktur: Kural, doğrulayan ve hataları döndüren bir 'NewT(...) *T' işlevidir.~10 min
06 · Modül 6 — Arayüzler
Yapısal arayüzler (açık uygulamalar yok), iddialar, tür anahtarları ve standart 'Stringer' ve 'hata' arayüzleri.
- 6.1Arayüzler: bir davranışı tanımlamaArayüz bir dizi yöntemden oluşur; bunları uygulayan kişi otomatik olarak yerine getirir (statik ördek yazma).~12 min
- 6.2Onay yazın`v, ok := i.(*MyT)`, paniği önlemek için virgül-ok formu, bir tür anahtarı yerine bir iddianın tercih edilmesi gerektiğinde.~10 min
- 6.3Tip anahtarıÇalışma zamanı türüne göre göndermek için `switch v := x.(type) { case int: ... }'.~10 min
- 6.4Stringer arayüzü'String() string'i uygulamak 'fmt.Println'in türünüzü temsil etme biçimini değiştirir.~10 min
- 6.5Hata arayüzü'hata' yalnızca 'Error() dizesidir'; özel hatalar oluşturuluyor, `errors.Is`, `errors.As`, `fmt.Errorf("%w", err)`.~14 min
07 · Modül 7 – Eşzamanlılık
Go'nun eşzamanlılık modeli: hafif goroutinler, iletişim kanalları, "seçme", senkronizasyon ve bağlam.
- 7.1Goroutinler: hafif paralellik`go f()`, bir goroutine'in maliyeti, main'in neden beklemeden çıktığı ve nasıl senkronize edileceği.~12 min
- 7.2Kanallar: yazılı iletişim`ch := make(chan int)`, `ch <- v`, `v := <-ch`, arabelleğe alınmış ve arabelleğe alınmamış kanallar, kapatılıyor.~15 min
- 7.3'select': kanalların çoğullanmasıİlk hazır kanalı, engellemeyi önlemek için 'varsayılan' durumu, 'time.After' ile zaman aşımı modelini bekleyin.~12 min
- 7.4'sync.Mutex' ve 'sync.WaitGroup'Kanallar yeterli olmadığında: Mutex ile paylaşılan durumu koruyun, WaitGroup ile N goroutine bekleyin.~14 min
- 7.5`context.Context`: iptal ve son tarihlerİptal işlemini goroutine'ler arasında yayın; `context.WithTimeout`, `ctx.Done()`, birinci parametre modeli.~14 min
08 · Modül 8 – Temel standart kütüphane
Her gün kullanacağınız paketler: fmt, strings, strconv, io, os, time, encoding/json.
- 8.1Gelişmiş 'fmt''Sprintf', 'Fprintf', '%+v' ve '%#v' fiilleri, genişlik ve hassas biçimlendirme, '-' ve '0' bayrakları.~10 min
- 8.2'dizeler' ve 'strconv''strings.Contains/Split/Join/TrimSpace', 'strconv.Itoa/Atoi/ParseInt/FormatFloat'.~12 min
- 8.3'io' ve 'os': dosyalar ve akışlar'os.Open/Create/ReadFile/WriteFile', 'io.Reader/Writer' arayüzleri, 'defer f.Close()' modeli.~14 min
- 8.4'Zaman' paketi'time.Now()', süreler, '2006-01-02 15:04:05' referans düzeniyle ayrıştırma, zamanlayıcılar ve işaretleyiciler.~12 min
- 8.5'kodlama/json''json.Marshal/Unmarshal', yapı etiketleri, akışlar için 'json.Decoder/Encoder', ayrıştırma hataları.~14 min
09 · Modül 9 — Testler, modüller ve araçlar
'Go test' aracı, tablo odaklı testler, kıyaslamalar, 'go mod' ile bağımlılık yönetimi ve derleme etiketleri.
- 9.1'Test' paketi`*_test.go` dosyaları, `TestXxx(t *testing.T)` işlevleri, `t.Error` ve `t.Fatal`, `go test ./...`.~12 min
- 9.2Tabloya dayalı testlerDeyimsel kalıp: girdileri ve beklenen çıktıları içeren anonim yapılardan oluşan bir dilim, alt testler için `t.Run(name, ...)`.~14 min
- 9.3Karşılaştırmalar ve profiller'BenchmarkXxx(b *testing.B)' işlevleri, 'for i := 0; i < b.N; i++' döngüsü, 'test -bench=.' git.~12 min
- 9.4Modüllere git"go mod init", "go get", anlamsal içe aktarma versiyonlama, "go.sum" kilit dosyası, "go mod tidy".~12 min
- 9.5Kısıtlamalar ve etiketler oluşturunPlatformlar arası derlemeler için `//go:build ...` yönergesi, test/entegrasyon kodunun ayrılması, gerçek dünyadan örnekler.~10 min
10 · Modül 10 – Deyimsel pratik
Adlandırma, gelişmiş hata işleme, jenerikler (Go 1.18+) ve iki mini proje: bir CLI ve bir HTTP sunucusu.
- 10.1Adlandırma kuralları ve stiliİhracat için PascalCase, yereller için camelCase, kısa kapsamlarda kısa adlar, `gofmt` tartışılamaz.~10 min
- 10.2Deyimsel hata işlemeNöbetçi hataları ("io.EOF"), "Paketlemeyi Aç" ile ilgili özel hatalar, "%w" ile sarmalama, "panik"in ne zaman kullanılacağı.~14 min
- 10.3Jenerikler (1.18+ sürümüne geçin)Parametreleri yazın: `func Harita[T, U herhangi](s []T, f func(T) U) []U`, kısıtlamalar (`karşılaştırılabilir`, özel), ödünleşimler.~15 min
- 10.4Mini proje: bayraklı bir CLI'flag' paketi, komutlar ve alt komutlar, çıkış kodları, çıktı için 'log' ve 'fmt'.~18 min
- 10.5Mini proje: bir HTTP sunucusu'net/http', minimum düzeyde işleyici ve yönlendirici, dekoratör olarak ara yazılım, bağlamla zarif kapatma.~18 min