Go dili kapsamlı bir araç seti ile beraber geliyor. Terminalinizden go
komutunu çalıştırarak bunları görebilirsiniz:
Şekil 1.3 Go komutlarnın detaylı gösterimi
Bizim için hepsi çok kullanışlı araçlar. Şimdi onları nasıl kullanabileceğimize bakalım.
Go paketlerini derlemek için kullanılan komuttur. Eğer gerekli ise bağımlı olan paketleri de otomatik derler.
- Eğer paket
main
değilde, bölüm 1.2 deki gibimymath
ise,go build
çalıştığında hiç birşey oluşturulmayacak. Eğer$GOPATH/pkg
içinde.a
uzantılı derlemiş haline istiyorsanız,go install
komutunu kullanabilirsiniz. - Eğer paket
main
ise, aynı dizin içinde çalıştırılabilir hali oluşturacaktır. Eğer oluşacak dosyanın$GOPATH/bin
içinde olmasını istiyorsanız,go install
ya dago build -o ${DİZİN_YOLU}/a.exe
olarak çalıştırın. - Dizinde birden fazla go dosyası varsa, ve sadece birini derlemek istiyorsanız,
go build
komutuna dosya ismini argüman olarak vermelisiniz. Örneğin,go build a.go
.go build
argüman almaz ise dizindeki bütüm dosyaları derleyecektir. - Oluşacak dosyanın ismini de önceden belirleyebilirsiniz. Örneğin,
mathapp
projesinde (bölüm 1.2'deki),go build -o astaxie.exe
komutumathapp.exe
yerineastaxie.exe
adında bir dosya oluşturacaktır. Öntanımlı isimlendirme ya dizin ismi ya da ilk kaynak kodu içeren dosya ismi olarak seçilmiştir.
( Go Programlama Dili Kılavuzu'na göre , paket isimleri package
anahtar kelimesinden sonra kaynak dosyanın ilk satırına yazılmalıdır. Dizin ismi ile aynı olması zorunlu değildir, çalıştırılabilir dosyanın ismi dizin ismi olacaktır.])
-
go build
,_
ya da.
ile başlayan dosyaları görmezden gelir. -
Her işletim sistemi için ayrı dosyalar tutmak isterseniz, işletim sistemi ismini ek olarak kullanabilirsiniz. Örneğin,
array.go
'yu farklı sistemler için yazacaksanız. Dosya isimleri aşağıdaki gibi olabilir:array_linux.go | array_darwin.go | array_windows.go | array_freebsd.go
go build
işletim sisteminize göre derleme işlemini yapacaktır. Örneğin, Linux kullanıyorsanız sadece array_linux.go derleyip, diğerlerini yoksayacaktır.
Derleyici tarafından oluşturulmuş aşağıdaki dosyaları temizler:
_obj/ // eski obje klasörü, Makefiles tarafından oluşturulmuş
_test/ // eksi test klasörü, Makefiles tarafından oluşturulmuş
_testmain.go // eski gotest dizini, Makefiles tarafından oluşturulmuş
test.out // eski test dizini, Makefiles tarafından oluşturulmuş
build.out // eksi test dizini, Makefiles tarafından oluşturulmuş
*.[568ao] // obje dosyaları, Makefiles tarafından oluşturulmuş
DIR(.exe) // go build tarafıdan oluşturulmuş
DIR.test(.exe) // go test -c tarafından oluşturulmuş
MAINFILE(.exe) // go build MAINFILE.go tarafından oluşturulmuş
Projelerimi Github'a göndermeden önce genellikle bu komutu çalıştırırım. Yereldeki testler için önemli, ama sürüm takip için gereksiz dosyalar.
Öncede C/C++ ile çalışmış olanlar, hangi kodlama stilinin daha iyi olduğu konusundaki tartışmları biliyordur: K&R-stili ya da ANSI-stili. Go da ise, herkesin kullanmak zorunda olduğu sadece bir kod stili vardır. Örneğin, açma parantezleri sadece satır sonlarına yazılmalıdır, kendi satırlarına yazılamazlar, eğer bu kurala uymazsanız derleme hatası alacaksınız! Neyse ki, bu kuralları ezberlemek zorunda değilsiniz. go fmt
bu işi sizin yerinize yapacaktır. Terminalinizde go fmt <dosya_ismi>.go
komutunu çalıştırmanız yetecektir. Bir çok IDE siz dosyayı kaydettiğinizde otomatik olarak bu komutu çalıştıracaktır. IDE'ler hakkında bir sonraki bölümde daha ayrıntılı bilgi vereceğim.
go fmt
sadece bir takma addır ve 'gofmt -l -w' komutu ile, klasör yolları olarak adlandırılan paketlerin üzerinde çalışır.
gofmt
şeklind değilde go fmt -w
şeklinde kullanmanız daha iyi olcaktır. -w
parametresi formatladıktan sonra değişiklikleri kaydetcektir. gofmt -w src
ise src altındaki butun dosyaları formatlar.
Bu komut üçüncü parti paketleri almanızı sağlar. Şuanda; BitBucket, Github, Google Code ve Launchpad desteği sunuyor. Bu komutu çalıştırdığımızda iki şey yapılıyor. Birincisi Go kaynak kodunu indiriyor, ikinci olarakta go install
komutunu çalıştırıyor. Bu komutu çalıştırmadan önce, gerekli araçları kurduğunuzdan emin olun.
BitBucket (Mercurial Git)
Github (git)
Google Code (Git, Mercurial, Subversion)
Launchpad (Bazaar)
Bu komutu kullanmak için, yukarıdaki araçları kurmuş olmanız lazım. $PATH
değişkenini ayarlamayı da unutmayın. Bu arada, özel alan adlarını da destekliyor. go help remote
komutu ile daha ayrıntılı bilgi edinebilrsiniz.
Bu komut bütün paketleri derleyip oluşan dosyaları, $GOPATH/pkg
ya da $GOPATH/bin
altına taşır.
Bu komut *_test.go
ile biten dosyaları derleyip çalıştırır, gerekli bilgileri ekrana basar.
ok archive/tar 0.011s
FAIL archive/zip 0.022s
ok compress/gzip 0.033s
...
Öntanımlı olarak bütün test dosyalarını çalıştırır. go help testflag
komutunu kullanarak daha ayrıntılı bilgi elde edebilirsiniz.
Bir çok insan Go için üçüncü parti bir dökümantasyona aracına gerek olmadığını düşünüyor (aslına bakarsanız ben bir tane yazdım bile CHM). Go dökümanları yönetmek için çok güçlü bir araca sahip.
Peki bir paketin dökümantasyonuna nasıl bakabiliriz? Örneğin, Eğer bir builtin
paket hakkında daha fazla bilgi istiyorsanız, go doc builtin
komutunu işinizi görecektir. Benzer şekilde, go doc net/http
komutu ile http
paketi hakkında bilgi elde edebilirsiniz. Fonksiyonlar hakkında daha ayrıntılı bilgi istiyorsanız, godoc fmt Printf
ve godoc -src fmt Printf
komutları işinizi görecektir(-src
fonksiyonun kodlarını göstercektir).
godoc -http=:8080
komutunu çalıştırın, 127.0.0.1:8080
adresine gidin. golang.org
'ın lokal versiyonunu görmüş olmanız gerekiyor. Sadece standart paketler hakkında değil, $GOPATH/pkg
altındaki bütün paketler içinde bilgileri bulabilirsiniz. Büyük Çin Güvenlik duvarından dökümantasyonlara erişemeyenler için.
Go yukarıda bahsettiklerimizden daha fazla komut sunuyor.
go fix // versiyon yükseltme
go version // Kulladığınız Go sürümü bilgisi
go env // Go ile alakalı ortam değişkenleri
go list // yüklü paketlerin listesi
go run // paketi geçiçi olarak derleyip çalıştırma
Go komutlarınin kendi dökümantasyonunda daha ayrıntılı bilgi bulabilirsiniz. go help <komut_ismi>
ile bu bilgilere erişebilirsiniz.
- İçerik
- Önceki bölüm: $GOPATH ve çalışma ortamı
- Sonraki bölüm: Go geliştirme araçları