- Go'nun temel özelliklerini ve kullanım alanlarını açıklamak
- Go'yu kurmak ve
go mod init,go run,go buildkomutlarını kullanmak package mainvefunc main()içeren bir program yazıpfmtile ekrana çıktı vermek
Bir bulut hizmetine dosya yüklediğinde ya da bir mobil uygulamada sipariş verdiğinde, isteğin büyük olasılıkla Docker konteynerlerinde çalışan ve Kubernetes tarafından yönetilen sunuculardan geçer. Bu iki teknolojinin ikisi de Go ile yazılmıştır. Bu derste Go'nun ne olduğunu öğrenecek, onu kuracak ve ilk programını çalıştıracaksın.
Go nedir?
Go (sıklıkla Golang diye de anılır), Google'da geliştirilmiş açık kaynaklı bir programlama dilidir. Yazarları Robert Griesemer, Rob Pike ve Ken Thompson'dır; Thompson aynı zamanda Unix işletim sisteminin yaratıcılarından biridir. Dil üzerindeki çalışmalar 2007'de başladı, Go Kasım 2009'da kamuoyuna duyuruldu ve ilk kararlı sürüm Go 1.0 2012'de çıktı.
Go'nun yaratıcılarının üç hedefi vardı: sadelik (dilde yalnızca 25 anahtar kelime vardır), hız (kod doğrudan makine koduna derlenir ve derleme çok hızlıdır) ve çok çekirdekli işlemcilerde kolay eşzamanlılık. Sonuçta Go; bulut hizmetleri, sunucular ve DevOps araçları için en popüler dillerden biri hâline geldi.
- Konteynerler ve bulut — Docker ve Kubernetes'in yanı sıra Prometheus (izleme) ve Terraform (altyapı yönetimi) de Go ile yazılmıştır.
- Web sunucuları ve API'ler — standart kütüphanedeki
net/httppaketiyle ek bir çatı (framework) olmadan sunucu yazılabilir. - Komut satırı araçları — GitHub'ın
gharacı ve Hugo site üreticisi Go ile yazılmıştır. Bir Go programı tek bir çalıştırılabilir dosyaya derlenir; bu yüzden dağıtması çok kolaydır.
| Özellik | Anlamı |
|---|---|
| Derlenen dil | Kod makine koduna çevrilir; program sanal makine olmadan çalışır. |
| Statik tür denetimi | Her değişkenin türü derleme sırasında denetlenir; birçok hata program çalışmadan yakalanır. |
| Çöp toplayıcı | Belleği kendin serbest bırakmazsın: Go kullanılmayan nesneleri otomatik temizler. |
| Goroutine'ler | go anahtar kelimesiyle binlerce hafif eşzamanlı görev başlatılabilir. |
| Tek çalıştırılabilir dosya | go build her şeyi tek bir dosyada toplar; onu sunucuya kopyalamak yeterlidir. |
Kurulum ve ilk program
- 1Go'yu indir
go.dev/dladresinden işletim sistemine uygun yükleyiciyi (Windows, macOS ya da Linux) indir ve çalıştır. - 2Kontrol et
Yeni bir terminal penceresi aç ve
go versionyaz. Kurulu sürüm görünüyorsa her şey hazırdır. - 3Proje oluştur
helloadlı bir klasör oluştur, içine geç vego mod init hellokomutunu çalıştır. Bu komut, proje adını ve Go sürümünü tutango.moddosyasını oluşturur. - 4Kodu yaz
Aynı klasörde
main.godosyası oluştur ve aşağıdaki programı yaz. Rahat editörler: resmî Go eklentisiyle Visual Studio Code ya da GoLand. - 5Çalıştır
go run .komutu programı derler ve hemen çalıştırır.go buildise çalıştırılabilir bir dosya oluşturur (Windows'tahello.exe).
package main
import "fmt"
func main() {
fmt.Println("Hello, world!")
}Hello, world!
package main— her Go dosyası bir paket bildirimiyle başlar.mainözel bir pakettir: ondan kütüphane değil, çalıştırılabilir bir program oluşur.import "fmt", standart kütüphaneden biçimlendirilmiş girdi-çıktı paketini ekler (fmt, format kelimesinin kısaltmasıdır).func main()programın giriş noktasıdır. Çalışma buradan başlar; bu fonksiyon bittiğinde program da sona erir.fmt.Println(...),fmtpaketindekiPrintlnfonksiyonunu çağırır: değeri ekrana yazar ve yeni satıra geçer. Dikkat et: satır sonunda noktalı virgül yok; Go onu kendisi ekler.
Ekrana yazdırmak
fmt paketinde üç temel fonksiyon vardır. Println birkaç değeri boşlukla ayırarak yazar ve sonunda yeni satıra geçer. Print yeni satıra geçmez. Printf ise bir biçim dizesiyle çalışır: %s, %d gibi işaretlerin yerine argümanlar konur, yeni satır için \n yazılır.
package main
import "fmt"
func main() {
fmt.Println("My name is", "Aysel")
fmt.Println(7+8, 7*8, 10-3)
fmt.Print("Hello, ")
fmt.Print("Go!\n")
fmt.Printf("%s is %d years old\n", "Murad", 15)
fmt.Printf("%v has type %T\n", 3.5, 3.5)
}My name is Aysel 15 56 7 Hello, Go! Murad is 15 years old 3.5 has type float64
| Belirteç | Ne yazdırır | Örnek |
|---|---|---|
%v | herhangi bir değeri varsayılan biçimde | 3.5 |
%s | bir dize | Murad |
%d | bir tam sayı | 15 |
%.2f | ondalık kısmında 2 basamak olan sayı | 3.14 |
%T | değerin türü | float64 |
Katı ama yararlı bir derleyici
Go derleyicisi, başka dillerin yalnızca uyardığı şeyler yüzünden programı hiç derlemez. Kullanılmayan bir değişken ya da eklenip kullanılmayan bir paket hatadır. Bu başta tuhaf gelir ama kodun temiz kalmasını sağlar. Açılan süslü parantez ise her zaman satırın sonunda olmalıdır, çünkü Go satır sonlarına noktalı virgülü otomatik ekler.
package main
import (
"fmt"
"os"
)
func main()
{
fmt.Println("Hi");
}package main
import "fmt"
func main() {
fmt.Println("Hi")
}{ yeni satırda ve os paketi hiç kullanılmıyor. ; ise hata değil, yalnızca gereksiz; gofmt onu siler.| Kod | Derleyici mesajı | Ne yapmalı |
|---|---|---|
import "os" | "os" imported and not used | Paket eklenmiş ama kullanılmıyor; satırı sil. |
x := 5 | declared and not used: x | Değişken tanımlanmış ama hiç okunmuyor; onu kullan ya da sil. |
func main(), { ise alt satırda | syntax error: unexpected semicolon or newline before { | Süslü parantezi önceki satırın sonuna taşı. |
Önemli noktalar
- Go, Google'da geliştirilmiş (2009) sade, hızlı ve derlenen bir dildir; Docker ve Kubernetes onunla yazılmıştır.
go mod initproje oluşturur,go run .programı çalıştırır,go buildçalıştırılabilir dosya üretir.- Çalıştırılabilir bir program
package mainpaketinde olmalı vefunc main()fonksiyonundan başlamalıdır. Printlndeğerleri boşlukla ayırıp satırı bitirir;Printfbir biçim dizesiyle çalışır:%v,%s,%d,%T.- Kullanılmayan değişkenler ve paketler hatadır;
{satır sonuna yazılır, kodu dago fmtbiçimlendirir.
Kendini test et
10 soru. Her doğru cevap XP kazandırır.