01
Dil Temelleri
Dilin tasarım amaçlarının okunabilirliğe ve derleme hızına bağlanması, modül başlatmayla ilk programın koşması, kısa bildirim ile sıralı sabitler, tam sayı ve kayan noktalı tiplerin ayrımı, ilk değeri verilmeyen her değişkenin tanımlı davranışı, koşul ve döngü biçimlerinin tek anahtar sözcükte toplanması, çoklu dönüş değeri ve değişken sayıda argümanın boş çağrıdaki karşılığı.
- 01 Go'nun Tasarım Amaçları Go derleyicisinin reddettiği dört şey — kullanılmayan değişken, kullanılmayan içe aktarım, yazılmayan dönüş değeri, örtük tip dönüşümü — program içinden çağrılan bir derleyiciyle koşturulur; dördü de derlemeyi durdurur ve örtük dönüşümün reddi aynı işi yapan kaynağı 15 karakterden 22 karaktere çıkarır.
- 02 Ortam Kurulumu ve İlk Program Bir Go kaynağının derlenebilmesi için üç şey zorunludur: paket bildirimi, giriş noktası (func main) ve modül dosyası; üçünden biri eksik olduğunda, kaynağın geri kalanı hiç değişmese bile derleme reddediliyor — modül dosyası kaynağın kendisinde hiç durmuyor.
- 03 Değişkenler ve Sabitler Kısa bildirim bir değişkenin tipini kaynakta hiç yazmadan belirliyor, altı sabitlik bir iota dizisinin yalnız ikisinde değer kaynakta yazılı — dördü bir önceki ifadenin tekrarından geliyor — ve aynı kısa bildirim satırı paket düzeyinde reddediliyor, fonksiyon içinde kabul ediliyor.
- 04 Temel Tipler Dört yazılmamışlık aynı çerçeveden geçiriliyor: tipsiz bir sabitin varsayılan tipi int oluyor, int8 sınırını aşan bir toplam -128'e sarıyor, çalışma zamanında toplanan iki float64 değeri 0.3'e eşit çıkmıyor, ve bir karakter değişmezinin tipi aslında int32 — rune yalnız bir takma ad. Sınırlayıcı ölçüm: örtük dönüşümün reddi sabitlerde geçerli değil.
- 05 Sıfır Değerler On beş yazılmamışlık tek bir çerçeveden geçiriliyor: sekizi dil tarafından tanımlı bir karşılık buluyor, dördü derleyici tarafından reddediliyor, üçü çalışma zamanına açık kalıyor. Sınırlayıcı ölçüm: nil bir dilime eklenebiliyor ama nil bir sözlüğe yazılamıyor — ikisi de aynı biçimde sıfır değer.
- 06 Denetim Akışı Beş biçim aynı soruyla ölçülüyor — koşulsuz for, tek koşullu for, ifadesiz switch, else'siz erken dönüş, kendiliğinden düşmeyen switch dalları — ve beşi de yazılmayan parçayı tanımlı bir karşılıkla dolduruyor. Sınırlayıcı ölçüm: yazılmayan break gerekmiyor, ama düşmeyi isteyen kod fazladan bir sözcük (fallthrough) yazmak zorunda.
- 07 Fonksiyonlar Adlandırılmış bir dönüş değerine hiç dokunulmadığında tipinin sıfır değerini taşıyor; bir dönüş değerinin hiç yazılmaması derleme zamanında reddediliyor, ama çağıranın döneni hiç yakalamadan yok sayması hiçbir şey demiyor — Go'da hata bir dönüş değeri olduğu için bu açıkta kalan davranış kursun en önemli örneği. Sınırlayıcı ölçüm: dönüş değeri değişkene alınıp kullanılmadığında bu açıklık kapanıyor ve kullanılmayan değişken reddi devreye giriyor.
- 08 Değişken Sayıda Argüman Hiç argüman verilmeyen bir değişken sayıda argüman parametresi nil bir dilim oluyor, tek tek yazılan argümanlar taze bir dilim üretiyor, mevcut bir dilimin ... ile açılması ise kopyalamadan aynı alt diziyi paylaşıyor — çağrılan tarafın yaptığı değişiklik çağırana yansıyor. Sınırlayıcı ölçüm: nil dilim ile boş dilim uzunlukça aynı ama == nil'de ayrışıyor, ve bu fark JSON karşılığında görünür oluyor.