Go, eşzamanlılık için güçlü desteğe sahip statik olarak yazılmış bir programlama dilidir. Google tarafından desteklenir ve sistem uygulama geliştirme veya web uygulamaları gibi genel amaçlı projeler için tasarlanmıştır. Golang, sağlam özellik seti ve en son programlama uygulamalarına desteği nedeniyle giderek daha popüler hale geliyor. Çok sayıda şirket, modern uygulamalarda artan kullanımı nedeniyle aktif Go geliştiricileri arıyor. Geliştiriciler, programlama üretkenliklerini veya iş akışı yönetimlerini artırmak için bir dizi go komutu kullanabilirler. Bu kılavuzda, bu komutlardan bazılarını hevesli Go geliştiricileri için tartışacağız.
Linux’ta Faydalı Go Komut Örnekleri
Go, programcılar için derleme sürecini ve iş akışını yönetmek için bir dizi kullanışlı araç sunar. Bunlar, doğrudan go’ya yerleştirilmiş bir dizi basit komut aracılığıyla çağrılır. Aşağıdaki bölümde bu türden 40 kullanışlı komutu ana hatlarıyla açıklıyoruz.
1. Bir Program Derleme
Go build komutu geliştiricilerin belirli bir program için yürütülebilir dosyayı oluşturmasına olanak tanır. Bunu göstermek için server.go adında basit bir sunucu programı yazdık. Şimdi, bu programı go build kullanarak oluşturacağız.
$ go build server.go
Bu komut go çalışma dizinimizde server adında bir yürütülebilir dosya oluşturacaktır. Server programının kodunu Golang web sitesinin bu bölümünden bulabilirsiniz. Şimdi, programı diğer Linux komut satırı araçları gibi çalıştırabiliriz.
$ ./server
2. Bir Programı Derlemeden Çalıştırın
Geliştiriciler genellikle programlarında testlere dayalı olarak kademeli değişiklikler yaparlar. Her ufak değişiklik yaptığınızda programı derlemek elverişsizdir. Neyse ki go, ilk etapta derlemeden bile bir programı çalıştırmamıza izin verir.
$ go run server.go
Bu komut, kaynak kodunu derlemenizi gerektirmeden programı doğrudan çalıştıracaktır. Daha küçük alt programlarla uğraşırken son derece kullanışlıdır.
3.Mevcut GOPATH’ı görüntüle
Go, bir programın kaynak kodlarını, nesnelerini ve ikili dosyalarını Go Çalışma Alanı’nı kullanarak yönetir. Bu çalışma alanının kökü GOPATH değişkeni kullanılarak belirtilir. Aşağıdaki komutu kullanarak Go Çalışma Alanınıza giden geçerli yolu bulabilirsiniz.
$ go env GOPATH
Kaynak dosyalarınızı buraya koymanız ve derlemeniz gerekir. Birden fazla Go Çalışma Alanı ayarlayabilmenize rağmen, tek bir ayrı çalışma alanı kullanmanız önerilir. Alt komut env ayrıca daha sonra göreceğimiz gibi birçok başka bilgi de sağlar.
4.Yeni GOPATH’ı ayarlayın
Go 1.8 sürümünden itibaren Unix sistemleri $HOME/go dizinini varsayılan GOPATH olarak belirtir. Ancak, aşağıdaki basit komutu kullanarak bunu kolayca farklı bir konuma değiştirebilirsiniz.
$ go env -w GOPATH=$HOME/projects/go
Bu, GOPATH’inizi $HOME/projects/go olarak değiştirecektir. Ayrıca, ~/.bash_profile’ınıza aşağıdaki satırı ekleyerek GOPATH’i ayarlayabilirsiniz. Dosyayı favori Linux metin düzenleyicinizi kullanarak açın ve bir sonraki satırı sonuna ekleyin.
export GOPATH=$HOME/projects/go
Dosyayı kaydettikten sonra çıkın ve değişiklikleri yansıtmak için aşağıdaki komutu çalıştırın.
$ source ~/.bash_profile
5. Go Paketlerini Yükleyin
Yazdığınız veya kullandığınız her go programı bir go paketinin parçasıdır. Go paketleri, /src dizininin içinde bazı go dosyaları içeren bir dizinden başka bir şey değildir. Go paketlerini go install komutunu kullanarak çok kolay bir şekilde kurabiliriz.
$ go install test-app
Bu komutu çalıştırdığınızda, go önce $GOROOT/src dizininde ve sonra $GOPATH/src dizininde test-app dizinini arayacaktır. Bulduğu zaman, go kaynak dosyalarında main paketini arayarak paketin giriş noktasını belirleyecektir. Go daha sonra bu paketi kurmaya devam edecek ve test-app ikili dosyasını çalışma alanınızın /bin dizinine yerleştirecektir.
6. Paketleri İndirin ve Yükleyin
Golang, çok sayıda FOSS geliştiricisi arasında giderek artan bir popülerliğe sahip. Sonuç olarak, go kullanılarak birçok yararlı program yazılıyor. Aşağıdaki basit komutu kullanarak üçüncü taraf bir go paketini kolayca indirebilir ve yükleyebilirsiniz.
$ go get host/example-project $ go get github.com/fatih/color
Bu komut, popüler renk paketini tüm bağımlılıklarıyla birlikte indirecek ve kuracaktır. Ayrıca, aşağıda gösterildiği gibi, -u bayrağını kullanarak paketi gelecekte güncelleyebilirsiniz.
$ go get -u github.com/fatih/color
7. Paketleri Bağımlılıklarla Birlikte Listeleyin
Go çalışma alanınız zamanla büyüyecek ve artık ihtiyaç duyulmayan paketleri barındırabilir. Yüklü tüm go paketlerini ve bağımlılıklarını listeleyebilirsiniz. Bu, çalışma alanınızdan hangi paketleri kaldıracağınızı belirlemenize yardımcı olacaktır.
$ go list
Bu go komutu bir içe aktarma yolu gerektirir ve belirli bir paket hakkında bilgi sağlar. Yüklü tüm paketler hakkında bilgi almak için özel bir joker karakter kullanmanız gerekir.
$ go list ./...
Bu komutu GOPATH’inizden çalıştırdığınızda go, çalışma alanınıza yüklenen tüm paketleri gösterecektir.
8. Go Paketlerini Düzeltin
Go sürümünüzü güncellediğinizde, eski özellikleri kullanan programlar bozulabilir. Go, bu programları düzeltmek ve dilin daha yeni özelliklerini kullanmak için yeniden yazmak için kullanışlı bir araç sağlar. Bunu yapmak için go fix komutunu kullanmanız gerekecektir.
$ go fix app/app.go
Bu komut, app.go dosyasını daha yeni Go API’lerini ve özelliklerini barındıracak şekilde yeniden yazacaktır. Tüm uygulamaları düzeltmek için aşağıdaki komutu kullanın.
$ go tool fix app/
9. Go Nesnelerini Kaldırma
Go, program derlemeleri sırasında nesne dosyaları oluşturur ve bunları geçici bir dizinde depolar. Ayrıca, birçok go aracı depolama alanı kaplayan çeşitli nesneler de oluşturur. Zamanla kullanılmayan nesnelerden kurtulmak isteyeceksiniz.
$ go clean
Bu komutu çalıştırmadan önce oluşturulan tüm go nesnelerini kaldıracaktır. Belirli bir paket için tüm nesneleri kaldırmak için aşağıdaki komutu kullanın.
$ go clean -i app/
clean komutunun -i seçeneği, ilgili tüm ikili dosyaları veya arşivleri de silecektir.
10. Çevre Bilgilerini Görüntüle
Programcılar çeşitli go ortam değişkenleri hakkında kolayca bilgi bulabilirler. Go env komutu, Linux terminal emülatörünüzdeki tüm go ortam değişkenlerini görüntülemek için kullanılabilir.
$ go env
Değerleri ayarlanmış olsun veya olmasın tüm go değişkenlerini yazdıracaktır. Belirli bir go değişkeninin değerini yazdırmak için aşağıdaki formatı kullanın.
$ go env VARIABLE $ go env GOCACHE
Yukarıdaki sözdizimini kullanarak GOPATH’ı daha önce yazdırdık. Belirli ortam değişkenlerini almak için kullanışlıdır.
11. Hata Raporları Oluşturun
Go nispeten yeni bir dildir ve sıklıkla yeni özellikler sunar. Çok dikkatli bir şekilde tasarlanmış olmasına rağmen, bazen istenmeyen hatalarla veya sorunlarla karşılaşabilirsiniz. Neyse ki, go çalışma zamanı için hata raporları oluşturmak çok uygundur.
$ go bug
Yukarıdaki komutu çalıştırdığınızda, varsayılan tarayıcınız açılacak ve Go’nun resmi GitHub deposunda bir hata raporu oluşturulacaktır. Sistem bilgileri ve go yapılandırmaları gibi tüm temel bilgileri ekleyecektir.
12. Paket Kaynaklarını Yeniden Biçimlendirin
Go çalışma zamanı, geliştiriciler için biçimlendirmeyi son derece kullanışlı hale getirir. Linux kod düzenleyicinizi başlatabilir ve girintiler veya hizalamalar hakkında düşünmeden kod yazmaya başlayabilirsiniz. İşiniz bittiğinde, kodunuzu Go’nun önerisine göre biçimlendirmek için aşağıdaki go komutunu kullanın.
$ go fmt [packages] $ go fmt server.go
İkinci komut server.go dosyasını biçimlendirir. Ayrıca hepsini biçimlendirmek için bir sürü go dosyası içeren bir dizin de geçirebilirsiniz. Go girintiler için sekmeleri ve kod hizalamaları için boşlukları kullanacaktır.
13. Modülleri Yönetin
Tüm Go komutları modüller için önceden oluşturulmuş desteğe sahiptir. Go’daki modüller, birden fazla go paketinin bir araya gelmesinden başka bir şey değildir. go.mod dosyası, bir Go uygulaması için tüm üçüncü taraf paketlerini içerir. Aşağıdaki komutu kullanarak bu dosyayı kolayca oluşturabilirsiniz.
$ go mod <command> [arguments] $ go mod init app
Bu komut özel uygulama paketimiz için bir go.mod dosyası oluşturacaktır. Modül adını ve go sürüm bilgisini içerecektir. mod yardımcı programı init dışında çeşitli diğer komutları da alır. Mevcut seçenekleri görüntülemek için aşağıdakileri yazın.
$ go help mod
14. Go Dosyaları Oluşturun
Golang, geliştiricilerin mevcut kaynaklardaki yönergeleri kullanarak Go kaynak dosyaları oluşturmasına veya güncellemesine olanak tanır. Bunu yapmak için generate komutu kullanılır. Generate, Go dosyaları oluşturmak veya güncellemek için tasarlanmış olsa da, diğer görevleri gerçekleştirmek için de kullanılabilir.
$ go generate [-run regexp] [-n] [-v] [-x] [build flags] [file.go... | packages]
Go generate komutunu çalıştırdığınızda, go kaynak dosyalarınızda aşağıdaki formattaki yönergeleri arayacaktır.
//go:generate command argument...
Generate, go kaynağınızın içindeki yönergeyi bulduğunda komutu çalıştıracaktır. “//go“ öncesinde veya içinde boşluk olamayacağını unutmayın.
15. Paket Bağımlılıklarını Yükseltin
Daha önce go get yardımcı programını kullanarak paketlerin nasıl kurulacağını veya güncelleneceğini göstermiştik. Ancak, daha büyük projeler üzerinde çalışırken, genellikle paket bağımlılıklarınızı güncellemeniz gerekecektir. Aşağıdaki komut, GOPATH’ınızda bulunan tüm Go paketlerini günceller.
$ go get -u all
Ancak, farklı projeler için farklı GOPATH kullanmalısınız. Bu, proje A’daki paketleri güncellemenin proje B’yi bozmayacağından emin olacaktır. Ayrıca, ‘@’ son ekini kullanarak bir paketi belirli bir sürüme yükseltebilirsiniz.
$ go get foo@v1.6
16. Test Paketi Yükseltmeleri
Yükseltmeyi tamamladıktan sonra, tüm eski projelerinizin kusursuz çalıştığından emin olun. Bunu terminalinizden yapmak için aşağıdaki basit komutu kullanabilirsiniz.
$ go test all
Bu komut, paket yükseltmelerinden sonra uygulamaların beklendiği gibi çalışıp çalışmadığını kontrol edecektir. Ayrıca, projenin içe aktarma yolunu belirterek tek bir projeyi de test edebilirsiniz.
$ go test app/
Bu, test sonuçlarına ilişkin özet bilgileri görüntüler.
17. Paketlerdeki Hataları Bulun
Go, kaynak dosyanızdaki beklenmedik hataları veya yanlışları yakalamak için esnek bir araç sağlar. go vet komutu, genellikle gerçek hatalara yol açan yapıların şüpheli kullanımını bulmak için sezgisel yöntemler kullanır. Aşağıdaki komut, geçerli dizindeki paketi bu tür hatalar açısından inceler.
$ go vet
Aşağıdaki örnekte gösterildiği gibi, paketleri içe aktarma yolunu kullanarak da belirtebilirsiniz.
$ go vet app/
Veteriner ve mevcut seçenekleri hakkında daha fazla bilgi edinmek için aşağıdaki komutu kullanın.
$ go doc cmd/vet
18. Modülleri Önbelleğe İndirin
Go Modüllerini yerel önbelleğinize indirebilirsiniz. Bu, daha büyük projeler üzerinde çalışırken çok kullanışlıdır ve zamanla uygulama güncellemelerini kolaylaştırır. Bunun için komut aşağıdaki gibidir.
$ go mod download [-x] [-json] [modules]
Aşağıda gösterildiği gibi modül adını geçmeniz yeterli.
$ go mod download example-project/app
Go sürüm 1.11’den beri, indirilen modüller $GOPATH/pkg/mod’da saklanır. -x seçenekleri mod download tarafından hangi komutların yürütüleceğini görüntüler. -json bayrağı indirilen modülü tanımlayan bir dizi JSON nesnesini terminal çıktısına yazdırır.
19. Modül Bağımlılıklarını Koruyun
Go mod tidy komutu eksik bağımlılıkları eklememize veya kullanılmayan modülleri silmemize olanak tanır. Bu go komutu modül bağımlılıklarını sürdürmenize ve uygulamalarınızı mümkün olduğunca yalın tutmanıza yardımcı olur. Bunu yapmak için aşağıdaki basit komutu çalıştırmanız yeterlidir.
$ go mod tidy [-v]
Bunu projenizin kök dizininden çalıştırdığınızdan emin olun. Hangi bağımlılıkların eklendiğini veya silindiğini görmek için go.mod dosyasını kontrol edebilirsiniz. -v bayrağı, kullanılırsa, tidy’nin hangi modüllerin standart hataya kaldırıldığını görüntülemesine neden olur.
20. Bağımlılıkların Satıcı Tarafından Sağlanan Kopyasını Oluşturun
Go, geliştiricilerin modül bağımlılıklarının satıcılı bir kopyasını oluşturmasına izin verir. Bu, ana modülün satıcı dizinini sıfırlar ve ana modülde bulunan paketleri derlemek veya test etmek için gereken tüm paketleri içerir.
$ go mod vendor [-v]
Yukarıdaki komut ana modülün bağımlılıklarının satıcılı bir kopyasını oluşturur. -v seçeneğini kullanırsanız, satıcılı modüllerin ve paketlerin adlarını sistemin standart hatasına görüntüler.
21. Modül Bağımlılıklarını Doğrulayın
Programcılar mevcut modüllerin tüm bağımlılıklarının beklenen içeriğe sahip olup olmadığını kolayca doğrulayabilir. “go mod” verify komutu, yerel önbellekteki herhangi bir bağımlılığın indirmeden bu yana değiştirilip değiştirilmediğini kontrol eder. Komut aşağıdaki formatı alır.
$ go mod verify
Yukarıdaki komut, modül bağımlılıkları değiştirilmemişse ‘tüm modüller doğrulandı’ yazdıracaktır. Aksi takdirde, hangi modüllerin değiştirildiğini bildirecek ve sıfır olmayan bir çıkışa neden olacaktır. Bu basit araç, geliştiricilerin bağımlılıklarının bütünlüğünü belirlemelerine yardımcı olabilir.
22. Paketlerin/Modüllerin Neden Gerekli Olduğunu Gösterin
Uygulamanızda belirli modüllerin veya paketlerin neden gerekli olduğunu görebilirsiniz. Başka birinin koduyla çalışıyorsanız veya belirli bir projede belirli şeylerin ne işe yaradığını anlamaya çalışıyorsanız bu yararlıdır. Mod aracının “why” komutu bunu yapmamızı sağlar.
$ go mod why [-m] [-vendor] packages... $ go mod why golang.org/x/text/language golang.org/x/text/encoding
Birincisi genel sözdizimi, ikincisi ise bir örnektir. Dil ve kodlama paketlerinin uygulamanızda neden gerekli olduğunu yazdırır.
23. Go Binaries’i parçalara ayırın
Go’yu sistem programlama veya oyunlar gibi yoğun uygulamalar için kullanıyorsanız, zaman zaman yürütülebilir dosyalarınızı analiz etmeniz gerekecektir. Go, ikili dosyaları analiz etmek için bir dizi araç sağlar. Bu örnekte, objdump komutuna bakacağız. Go yürütülebilir dosyalarını parçalara ayırır ve Linux objdump komutu gibi çalışır.
$ go tool objdump [-s symregexp] binary
Bu objdump için desteklenen sözdizimidir. Objdump’ı kullanmak için go aracı yardımcı programını kullanmanız gerekir. Aşağıdaki komut server.go adlı bir go ikili dosyasını parçalara ayırır.
$ go tool objdump ./server
-s seçeneğini kullanarak sökmeyi belirli sembollerle sınırlayabilirsiniz. Yalnızca adı symregexp ile eşleşen sembolleri söker. Genellikle çıktıyı ayrıntılı inceleme için kaydetmek istersiniz.
$ go tool objdump ./server > disassembled-data
24. Paketler için Dışa Aktarılan API’yi Görüntüle
Bir dizi Go paketi tarafından dışa aktarılan API’leri kolayca görüntüleyebilirsiniz. Bunu yapmak için go komutunun api aracını kullanmanız gerekecektir. Bunun nasıl çalıştığını görmek için aşağıdaki komuta yakından bakın.
$ go tool api
Bu, go paketleriniz için API’leri standart çıktıda yazdıracaktır. Bu komutun çıktısını kaydetmek istiyorsanız çıktıyı bir dosyaya yönlendirin.
25. Go Assembler’ı kullanın
Go, geliştiricilerin montajcı kaynak kodundan nesne dosyaları oluşturmasına olanak tanıyan yerleşik bir montajcı ile birlikte gelir. Montajı go ile nadiren kullanacaksınız ancak bunu yapabilme yeteneğinin olması zarar vermez. Montaj kodunu go paketinizin içine yazmanız yeterlidir. Daha sonra aşağıda gösterildiği gibi go montajcısını çağırabilirsiniz.
$ go tool asm test.s $ go tool asm new-test.asm
Genellikle, sistem programcıları kritik bir kod bölümünün performansını artırmak için assembly kullanır. Go bile, pi hesaplaması gibi, matematik paketinin bir kısmını assembly kullanarak uygular.
26. İkililerin Yapı Kimliğini Yazdır
Bir ELF ikilisinin yapı kimliği, yapı bilgisinin benzersiz bir temsilidir. Go, bu bilgiyi doğrudan terminalinizden görüntülemek için basit bir yardımcı program sağlar. Bunun nasıl çalıştığını görmek için aşağıdaki örneğe bakın.
$ go tool buildid server
Bu, server adlı ikili yürütülebilir dosyanın yapı kimliğini yazdıracaktır. Bu, go build veya diğer yapı araçlarıyla ikili dosyayı oluşturduğunuzda oluşturulur. Bunu file komutunun çıktısıyla eşleştirebilirsiniz. Aşağıdaki komutu çalıştırın ve Go BuildID bölümünü arayın.
$ file server
27. CGO Aracını kullanın
Go’nun önemli bir özelliği C kod tabanlarıyla birlikte çalışabilirliğidir. Go kaynaklarında C kodlarını kullanabilir ve tam tersini yapabilirsiniz. Daha sonra paketinizin kökünden go build veya install kullanarak ikiliyi üretebilirsiniz. Alternatif olarak, go çalışma zamanının cgo aracını kullanabilirsiniz.
$ go tool cgo [cgo options] [-- compiler options] gofiles...
$ go tool cgo app/ccode.go
Cgo’da hangi seçeneklerin mevcut olduğunu görmek için aşağıdaki dokümanlara bakın.
$ go doc cmd/cgo
28. Go Compile’ı kullanın
Varsayılan olarak, go build veya run komutu nesne dosyaları oluşturmaz. Bir nesne dosyası oluşturmak için go komutunun derleme yardımcı programını kullanabilirsiniz. Aşağıdaki örnekte gösterildiği gibi yalnızca go aracını kullandığınızda çalışacaktır.
$ go tool compile server.go
Bu komut, server adlı ikili bir yürütülebilir dosya ve server.o adlı bir nesne dosyası oluşturur. Derleme yardımcı programı ayrıca çok sayıda kullanışlı işlevsellik sunar. Aşağıdaki komutu çalıştırarak derlemenin ayrıntılı bir genel görünümünü kontrol edebilirsiniz.
$ go doc cmd/compile
29. Go Dist’i kullanın
dist yardımcı programı geliştiricilerin terminallerinden go çalışma zamanını önyüklemesine, derlemesine ve test etmesine olanak tanır. Aşağıdaki sözdizimine sahiptir.
$ go tool dist [command]
Kullanılabilir komutlardan bazıları banner, bootstrap, clean, list, env ve version’dur. Aşağıdakileri çalıştırarak desteklenen tüm komutların bir listesini bulabilirsiniz.
$ go doc cmd/dist
Örneğin, aşağıdaki kod parçası dist aracını kullanarak Go kurulum başlığını yazdırır.
$ go tool dist banner
Go için desteklenen tüm platformları listelemek için aşağıdaki komutu kullanın. İşletim Sistemi, Mimari ve CGO desteğini belirten bir JSON çıktısı görüntülenecektir.
$ go tool dist list -json
30. Gofmt Aracını kullanın
Gofmt, Go’nun kaynak biçimlendirme yardımcı programlarından bir diğeridir. fmt’ye oldukça benzer şekilde çalışır. Aslında, go fmt kullandığınızda, bunu arka planda çağırır. Gofmt’nin söz dizimi aşağıdaki gibidir.
$ gofmt [flags] [path ...]
Örneğin, aşağıdaki komut test.go kaynak dosyasını yeniden biçimlendirecek ve standart çıktıya yazdıracaktır. Bir dosya adı yerine bir yol adı verirseniz, gofmt o dizin içindeki tüm .go dosyalarını yeniden biçimlendirmeye çalışacaktır.
$ gofmt test.go
fmt’nin aksine, gofmt değişiklikleri orijinal dosyaya geri yazmaz. Bunu yapmak için -w bayrağını kullanmanız gerekir. Mevcut tüm bayrakların bir listesini almak için aşağıdaki komutu kullanın.
$ go doc cmd/gofmt
31. Bağlantı Aracını Kullanın
Link yardımcı programı, bir paket ana dosyası için go arşivini veya nesnesini okur ve tüm bağımlılıklarını içeren ikili bir yürütülebilir dosya oluşturur. Go aracı kullanılarak çağrılır ve aşağıdaki sözdizimine sahiptir.
$ go tool link [flags] main.a
Örneğin, aşağıdaki komut server.o dosyasını bağımlılıklarıyla birleştirecek ve bir ikili dosya ortaya çıkaracaktır.
$ go tool link server.o
Link, geliştiricilerin yapı sürecini yönetmesine veya kontrol etmesine olanak tanıyan çok sayıda bayrağı destekler. Aşağıdaki komutu çalıştırarak bunların ayrıntılı bir listesini bulabilirsiniz.
$ go doc cmd/link
32. Sembol Listesini Yazdırma
Bir nesne dosyasında, arşivde veya yürütülebilir dosyada bulunan sembollerin listesini go nm aracını kullanarak yazdırabilirsiniz. Semboller, bir nesne dosyası tarafından kullanılan yöntemler gibi genel nesnelerin adlarıdır. Bu komutun sözdizimi aşağıda gösterilmiştir.
$ go tool nm [options] file...
$ go tool nm server.o
Çıktı her sembolü yeni bir satıra yazdırır. Adres, tür ve sembol adını temsil eden üç boşlukla ayrılmış alanla ayrılırlar. Sembol türlerinin listesini Go belgelerinin bu sayfasından görüntüleyebilirsiniz. Seçenekler arasında boyut, tür, sıralama ve n bulunur.
33. Go Arşivlerini Yönetin
Go, geliştiricilerin arşivler oluşturmasına, değiştirmesine veya çıkarmasına olanak tanır. Go aracı nm, bu tür ikili işlemleri yapmamıza olanak tanır. Unix’teki geleneksel ar aracının temel bir simülasyonudur. Bu komutun sözdizimi aşağıda gösterilmiştir.
$ go tool pack op file.a [name...]
Op, işlemleri ifade eder. Pack, arşiv oluşturma, arşive ekleme ve çıkarma gibi çeşitli işlemlere izin verir.
$ go tool pack r server.a server.o
Bu komut server.o dosyasını arşiv server.a dosyasına ekler. Aşağıdaki komutu çalıştırarak tüm kullanılabilir OP kodlarının listesini görebilirsiniz.
$ go doc cmd/pack
34. Profilleme verilerini görüntüle
Go, mükemmel profilleme desteğiyle gelir. Kaynak yoğun uygulamalar geliştiriyorsanız veya düşük özellikli makineler için programlama yapıyorsanız, profilleme performansınızı önemli ölçüde artırmanıza yardımcı olacaktır. Go komutunun pprof yardımcı programı, profilleme verilerini görüntülememize ve yorumlamamıza olanak tanır.
$ go tool pprof binary profile $ go tool pprof ./app cpu.prof
Hem CPU hem de Bellek profilleriyle çalışabilirsiniz. Dahası, pprof geliştiricilerin profilleme verilerini web üzerinden uzaktan analiz etmelerine de olanak tanır. Go programcıları API’yi biraz karmaşık bulabilirler ancak performans artışının öğrenme eğrisine değdiğini gördük.
35. İzleme Dosyalarını Görüntüle
Go, goroutines aracılığıyla mükemmel eşzamanlılık desteği sağlar. Ancak, geliştiricilerin programlarına pek fayda sağlamayan eşzamanlı kodlar yazdıklarını sıklıkla görürüz. Bu, gecikmeye, çekişmeye ve diğer performans sorunlarına neden olan etkisiz paralelleştirme nedeniyle olur. Neyse ki, go trace yardımcı programını goroutines’inizin nasıl çalıştığını görselleştirmek için kullanabilirsiniz.
$ go tool trace trace.out
Bu komut, birden fazla şekilde oluşturulabilen belirli bir program için trace.out izleme dosyasını görüntüler. Uygulamanız için bir izleme dosyası oluşturmak için go test komutunu, runtime/trace.Start veya net/http/pprof paketini kullanabilirsiniz. Bu konuda daha fazla bilgi edinmek için bu bağlantıya göz atın.
36. Test Çıktısını JSON’a Dönüştür
Go komut satırı yardımcı programı, test çıktısını JSON’a dönüştürmek için etkili bir yol sağlar. Bu JSON çıktısını daha sonra incelemek için kaydedebilir veya daha fazla işlem için kullanabilirsiniz. Aşağıdaki komut, Golang’ın test2json yardımcı programını kullanarak bunu nasıl yapacağımızı gösterir.
$ go tool test2json [-p pkg] [-t] [./pkg.test -test.v]
$ go tool test2json -p example.go -t example_test.go
İlk satır test2json komutu için sözdizimini içerirken, ikinci satır çalışan bir örnektir. JSON çıktısını doğrudan konsola gösterecektir. Basit bir yönlendirme kullanarak bu verileri kolayca kaydedebilirsiniz.
37. Addr2line Aracını kullanın
Go, go komutu addr2line aracılığıyla GNU addr2line aracının minimal bir simülasyonunu sağlar. Programınızdaki adresleri satır numaralarına çevirir. Sistem programcıları ve hata ayıklayıcıları için gerçekten yararlı olabilir.
$ go tool addr2line binary
Bu şekilde çağrıldığında, bu komut hex adreslerini okuyacaktır. Her adres için, o adrese karşılık gelen fonksiyon adını ve satır numarasını görüntüler. Aşağıdaki komutu kullanarak bu araç hakkında daha fazla bilgi edinebilirsiniz.
$ go doc cmd/addr2line
38. Yardım Sayfasını Görüntüle
Go’nun yardım sayfası standart go komutlarının özetlenmiş bilgilerini içerir. Günlük komutların kullanımını ve sözdizimini hızlıca aramak için kullanışlıdır. Aşağıdaki basit komutlardan birini çalıştırarak yardım sayfasını çağırabilirsiniz.
$ go help $ go --help
Ayrıca aşağıdaki sözdizimini kullanarak belirli bir komuta ait bilgileri de yazdırabilirsiniz.
$ go help <topic> $ go help install
39. Go Belgelerini Görüntüle
Go, çalışma zamanı yardımcı programları ve standart komutlar için derinlemesine belgeler sunar. Bunlar, Golang’ın temellerine hakim olmak ve en iyi uygulamaları öğrenmek istiyorsanız son derece yararlıdır. Belgeleri aşağıdaki yollardan biriyle çağırabilirsiniz.
$ man go
Bu, Go için temel bir kılavuz yazdıracaktır. Ancak, go her komut için ayrı kılavuzlar sağlar. Aşağıdakileri çalıştırarak belirli bir komut için ayrıntılı bilgi edinebilirsiniz.
$ man go-<topic> $ man go-install
Çeşitli go araçlarının belgelerine erişmek için go doc komutunu kullanın. Aşağıdaki komut go link yardımcı programının belgelerini görüntüler.
$ go doc cmd/link
40. Sürüm Bilgilerini Görüntüle
Golang nispeten yeni bir dildir ve bu nedenle çeşitli sürümlerde farklılıklar olması çok yaygındır. Birçok özellik eski go sürümlerinde mevcut değildir. Bu nedenle, go kurulumunuzun belirli özellikler için gereklilikleri karşıladığından emin olmanız gerekir.
$ go version
Yukarıdaki komut makinenizde hangi go runtime sürümünün yüklü olduğunu gösterecektir. Bunu, kodunuzun üretim ortamında geliştirme makinenizde olduğu gibi çalıştığından emin olmak için kullanabilirsiniz.
Yazının orijinalini buradan okuyabilirsiniz.