1.1. Go Dokümantasyonu
18
1.2. Statik Kod Analizi
18
1.3. Yerleşik Test ve Profil Çerçevesi
18
1.5. Nesne Tabanlı Programlama
19
1.6. Garbage Collector
19
2. GELİŞTİRME ORTAMININ KURULMASI
2.1. Go Programlama Dilinin Kurulumu
23
2.1.1. Linux İşletim Sistemi Üzerine Kurulum
23
2.1.2. Windows İşletim Sistemi Üzerine Kurulum
26
2.1.3. macOS İşletim Sistemi Üzerine Kurulum
28
2.2. Visual Studio Code IDE’nin Kurulumu
31
2.3. Windows İşletim Sistemi Üzerinde Bash Kullanımı
33
2.4. Web Üzerinde Go Kullanma
36
2.7. Yazılan Programın GitHub’a Yüklenmesi
41
3. DEĞİŞKENLER VE OPERATÖRLER
3.1. Değişken Tanımlama Şekilleri
49
3.1.1. Veri Tipini Belirterek Değişken Tanımlama
49
3.1.2. İlk Değer Atayarak Değişken Tanımlama
50
3.1.3. Veri Tipi Belirtmeden Değişken Tanımlama
50
3.1.4. Sadece Değişken Adı ile Tanımlama
51
3.1.5. Blok Halinde Değişken Tanımlama
51
3.2. Boş Değişken (Blank Identifier)
51
3.3. Sayısal Veri Tipleri
53
3.3.1. Tamsayılar (Integers)
53
3.3.1.1. İşaretli Tamsayılar
53
3.3.1.2. İşaretsiz Tamsayılar
53
3.3.2. Kayan Noktalı Sayılar ( Floating Point Numbers )
54
3.3.3. Complex Veri Tipi
55
3.4. Boolean Veri Tipi
55
3.6. Custom Tip Tanımlama
56
3.8.1. Veri Tipini Belirterek Sabit Tanımlama
58
3.8.2. Veri Tipini Belirtmeden Sabit Tanımlama
59
3.8.3. Blok Halinde Sabit Tanımlama
59
3.10.1. Aritmetik Operatörler
62
3.10.2. Atama Operatörleri
63
3.10.3. Karşılaştırma Operatörleri
63
3.10.4. Mantıksal Operatörler
63
3.10.5. Bit Düzeyinde (Bitwise) Operatörler
64
3.10.6. Operatör Önceliği
64
4. KONTROL YAPILARI VE DÖNGÜLER
4.1. if Kontrol Yapısı
67
4.1.1. Tek Başına if Kullanımı
67
4.1.2. if–else Kullanımı
68
4.1.3. Zincir Halinde if–else Kullanımı
69
4.1.4. Özel if Koşul İfadesi Tanımlamaları
69
4.2. switch Kontrol Yapısı
71
4.2.1. İfadenin Değerine Göre Switch–Case
71
4.2.2. İfade Kontrolü Yapmadan Switch–Case Kullanımı
72
4.2.3. İfadeye İlk Değer Atayarak Switch–Case Kullanımı
73
4.3.1. Sayaç Kontrollü for Yapısı
75
4.3.2. Şart Kontrollü for Yapısı
76
4.3.4. range for Yapısı
78
4.6. Etiket (label) Kullanımı ve goto Komutu
80
5.1.1. Genel dizi tanımlaması
85
5.1.2. İlk Değer Atama ile Tanımlama
86
5.1.3. len() Fonksiyonu
87
5.1.4. Dizi elemanlarına iteratif erişim
87
5.1.4. Çok Boyutlu Diziler
90
5.1.5. Fonksiyon Parametresi Olarak Diziler
92
5.2.1. Diziden Slice Tanımlama
95
5.2.2. Bir Slice’tan Başka Bir Slice Tanımlama
96
5.2.3. make() Fonksiyonu ile Slice Oluşturma
97
5.2.4. copy() Fonksiyonu
98
5.2.6. Slice Üzerinde İteratif İşlemler
100
5.2.7. Çok Boyutlu Slice
101
5.2.8. Fonksiyona Parametre Olarak Slice Gönderme
102
5.3.1. make() Fonksiyonu ile map Tanımlama
104
5.3.2.map İçerisinden Eleman Silme
105
5.3.3. Fonksiyonlara parametre olarak map gönderme
106
6.1. String İçerisine Erişim
109
6.3. string – byte–rune dönüşümü
111
6.4. String fonksiyonları
112
6.4.1. Önekler ve Sonekler ( Prefixes ve suffixes)
112
6.4.7. ToUpper() , ToLower()
116
7.1. Print Fonksiyonu
125
7.2. Printf Fonksiyonu
127
7.3. Println Fonksiyonu
130
7.5. Scanf fonksiyonu
133
7.6. Scanln fonksiyonu
135
8.1. Variadic Parametreler
142
8.2. Anonymous (Anonim) Fonksiyonlar
143
8.4. Yüksek Mertebeden (Higher–Order) Fonksiyonlar
145
8.5. Recursive (Özyinelemeli) Fonksiyonlar
147
8.7. İsimlendirilmiş Sonuç Parametreleri
149
8.8. Değer ile Çağırma (Call By Value)
150
8.9. Referans ile Çağırma (Call By Reference)
150
9.1. İşaretçilerin Default (varsayılan) değerleri
155
9.2. Pointer işaret eden Pointer
158
9.3. new() ile Pointer Oluşturma
159
9.4. Pointerların fonksiyonlar ile kullanımı
159
10.1. Anonymous (Anonim) Struct
165
10.2. Anonymous (Anonim) Alanlar
165
10.3. Struct’ların Default (Varsayılan) Değerleri
166
10.4. İç İçe Struct Kullanımı
166
10.5. Promoted alanlar
167
10.5. Struct’ların karşılaştırılması
169
10.6. Structlarda Dışa Aktarım (Exported Struct)
170
10.7. Pointer ile Struct’lar
170
10.9. Structlarda reflection
172
11. METOTLAR VE NESNEYE YÖNELİK PROGRAMLAMA
11.2. Pointer Alıcılar
179
11.3. Metotların Struct Olmayan Veri Tipleri ile Kullanılması
180
11.4. Class (Sınıf) Yerine Struct (Yapı)
181
11.5. Kurucu Fonksiyon (Constructor)
182
11.6. Kalıtım (Inheritance) Yerine Birleştirme (Composition)
185
11.7. Arayüz (Interface)
188
11.7.1. Boş Arayüz (Empty Interface)
190
11.7.2. Type Assertion
191
11.7.3. Tip Anahtarı (Type Switch)
192
11.7.4. Çoklu Arayüz İmplementasyonu
193
11.7.5. Arayüz Gömme (Interface Embedding)
194
11.8. Reflection (Yansıma)
196
12.1. Kendi Paketini Geliştirme
201
12.2. Paket Bazında Değişken ve Fonksiyonların Görünürlüğü
204
12.3. Paket Tanımlayıcılarına İsim Verme
206
12.4. Nokta Tanımlayıcısı
207
12.5. Paketlerde init Fonksiyonu
207
12.6. Default Olmayan Go Kütüphanelerinin Kullanılması
208
12.8.3 math/rand Kütüphanesi
215
12.8.3.1 rand.Float64() Fonksiyonu
215
12.8.3.2 rand.Intn() Fonksiyonu
216
12.8.3.3 Perm() Fonksiyonu
217
13. EŞZAMANLILIK (CONCURRENCY)
13.1. Go Rutinleri (Go Routines)
223
13.2. Kanallar (Channels)
226
13.4. Kanalların Kapatılması
229
13.5. Tek Yönlü Kanallar (Unidirectiona Channels)
231
13.6. Buffered Kanallar
233
14.1. Dosyadan Veri Okuma
245
14.1.1. io/ioutil paketi ile dosya okuma
245
14.1.2. bufio paketi ile dosya okuma
247
14.1.4. Dosyayı küçük parçalar halinde okuma
247
14.1.6. flag() ile Komut Satırından dosya okuma
249
14.2. Dosya Yazma İşlemleri
249
14.2.1. String olarak yazdırma
250
14.2.2. byte Olarak Yazdırma
251
14.2.3. Stringleri satır satır dosyaya yazdırma
252
14.2.4. Var Olan Bir Dosyaya Ekleme Yapmak
253
14.3. Dosya Bilgilerini Alma
254
14.5. Dosya Taşıma/ İsim Değiştirme
256
15. HATA İŞLEME (ERROR HANDLİNG)
15.1. error Veri Tipi
260
15.2. Özel (Custom) Hata Oluşturulması
264
16.2. Test ve Dokümantasyon Oluşturma
278
16.5. Coverage Analizi
284
17.1. Valid Fonksiyonu
290
17.5. Bir JSON Dosyası Oluşturulması
296
17.6. Bir JSON Dosyasından Okuma Yapılması
296