Go (Golang olarak da bilinir) açık kaynaklı, statik tipli bir programlama dilidir. İlk olarak Google tarafından geliştirilmiştir. Go'nun öne çıkan bazı özellikleri arasında sadelik, yüksek performans, okunabilirlik ve verimlilik yer alır.
Diğer tüm önde gelen programlama dillerinde olduğu gibi, Go'nun standart kütüphanesi de zengin bir paket seti sunar. Ancak, üçüncü taraf paketleri dahil ederek işlevleri de genişletebiliriz. Bu kılavuz, paketleri içe aktarmayı ve bunları Go projelerinize dahil etmeyi gösterecektir.
Gereksinimler
Bu kılavuzu takip etmek için elinizin altında aşağıdaki bileşenlerin hazır olması gerekir:
- Düzgün yapılandırılmış bir Ubuntu sunucusu. Şunun hakkında daha fazla bilgi edinin: CloudSigma üzerinde kendi Ubuntu sunucunuzu yapılandırma.
- Go programlama ortamı. Şu kılavuzu kullanabilirsiniz: Ubuntu üzerinde Go kurulumu.
- Modern bir metin editörü, örneğin, Vim, Sublime Text, Atom, Visual Studio Code, Brackets, vb. Bu kılavuzda şu kullanılacaktır: Visual Studio Code .
Adım 1 – Go Kurulumu
Çekirdek kurulumunu zaten tartışmıştık Ubuntu 20.04 üzerinde Go programlama dili. Ancak, daha kolay alternatif bir yöntem var: g (hafif bir Go sürüm yöneticisi).
Kullanacak olmamızın nedeni g Ubuntu’nun paket depolarında veya snap'te bulunan Go sürümlerinin hiçbirinin mevcut en son Go sürümünü içermemesidir (v1.18 bu kılavuzun yazıldığı sırada). Herhangi bir programlama dili paketinin mevcut en son sürümünün kullanılması her zaman önerilir.
Aşağıdaki komut, g kurulum betiğini çalıştıracaktır:
|
1 |
wget -qO- https://git.io/g-install | sh -s |


Değişikliklerin geçerli olması için kabuk oturumunu yeniden başlatmanız gerekir. Yeniden başlattıktan sonra kurulumu doğrulayın:
|
1 |
go version |
|
1 |
which go |

Go'yu kurduktan sonra, şunun da kurulması önerilir: gopls . Bu, resmi Go dil sunucusudur. VS Code, Vim, Emacs, Sublime Text, Atom ve çok daha fazlası gibi birçok metin editörüyle uyumludur. Aşağıdaki komutu çalıştırın:
|
1 |
go install golang.org/x/tools/gopls@latest |
Go programlama ortamımız artık hazır.
Adım 2 – Örnek Bir Go Betiği Oluşturma
Bu kılavuzda gösterilen tüm kodlar tek bir Go betiğine sığacaktır. Örnek bir Go betiği oluşturun:
|
1 |
touch practice.go |
Betiğe değişiklikleri yaptıktan sonra, aşağıdaki Go komutunu kullanarak çalıştırabiliriz:
|
1 |
go run practice.go |
Burada, Go derleyicisi kodu yorumlayıcı modunda çalıştıracaktır.
Adım 3 – Standart Kütüphane Paketlerini Kullanma
Go, standart kütüphanesinde devasa bir koleksiyonla birlikte gelir. Çok sayıda paketten oluşur, örneğin:
- fmt: C dilindekilere benzer işlevlerle biçimlendirilmiş G/Ç (I/O) uygular ( printf ve scanf ).
- http: Bu paket, web servisleri oluşturmak, veri göndermek ve almak için işlevler sağlar http protokolü üzerinden vb.
Herhangi bir paketi bir Go projesine dahil etmek için, bunun import ifadesi kullanılarak uygulanması gerekir. Bu ifade, import anahtar kelimesi ve paket adları ile birlikte bildirilir. Örneğin, math/rand paketini içe aktarmak için import ifadesi şu şekilde görünür:
|
1 |
import "math/rand" |
Aşağıdaki kod, math/rand paketindeki çeşitli işlevleri uygular:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
package main import "math/rand" func main() { for i := 0; i < 10; i++ { println(rand.Intn(25)) } } |
Bu kod, ekrana 10 rastgele tam sayı (0 ila 24) yazdıran basit bir for döngüsünü gösterir. Burada:
- rand.Int() : Bu işlev çağrısı rastgele bir tam sayı döndürür.
- rand.Intn() : Şuna benzer şekilde çalışır: rand.Int() ancak rastgele tam sayılar için aralığı tanımlayan bir parametre kabul eder (0'dan belirtilen sayıya kadar).
Ardından, kodu çalıştırın:
|
1 |
go run practice.go |
Çıktı şu şekilde görünecektir:

Rastgele sayı üretecinin tohumu (seed) varsayılan olarak sabit bir değer olduğundan, çıktının tamamen aynı olacağını unutmayın. Bu durum, bir sözde rastgele sayı üretecinin doğasıdır. Rastgele tohum hakkında daha fazla bilgiyi buradan edinebilirsiniz.
Adım 4 – Birden Çok Paketi İçe Aktarma
Daha büyük ve daha karmaşık projelerin birden fazla paketi dahil etmesi gerekir. Bunları Go kodunuza nasıl aktarırsınız? Geçerli seçeneklerden biri, içe aktarılan her paket için ayrı içe aktarma (import) ifadeleri kullanmaktır. Ancak bu yaklaşım, aşağıdaki içe aktarma yapısına kıyasla verimsizdir:
|
1 2 3 4 5 6 7 8 9 |
import ( "<package_1>" "<package_2>" "<package_3>" ) |
Burada, tek bir import ifadesi aynı anda birden fazla paketi dahil eder. Bu, okunabilirliği artırırken yazılması gereken kod miktarını azaltır.
Aşağıdaki kod bu özelliği uygulamaya koymaktadır:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
package main import ( "fmt" "math/rand" ) func main() { for i := 0; i < 10; i++ { fmt.Printf("%d) %d\n", i, rand.Intn(25)) } } |
Kodu çalıştırın:
|
1 |
go run practice.go |
Çıktı şuna benzer görünecektir:

Adım 5 – Ek Go Kütüphanelerini Kurma
Go'nun standart kütüphanesi çok sayıda kullanışlı paketle birlikte gelir. Bunlar, tasarımları gereği genel amaçlıdır. Geliştiricilerin kendi özel ihtiyaçlarını karşılamak için standart kütüphanenin üzerine kendi paketlerini oluşturmalarına olanak tanır. Resmi Go paket veritabanına göz atın.
Peki ya üçüncü taraf bir Go paketi uygulamanız gerekirse? Go, go install komutu ile birlikte gelir ( go get artık kullanımdan kaldırılmıştır). İnternetten herhangi bir üçüncü taraf Go paketini çekebilir.
Göstermek amacıyla, cobra-cli paketini kuracağız. Aşağıdaki Go komutu gerekli dosyaları indirip kuracak ve paketi Go kütüphane sistemine entegre edecektir:
|
1 |
go install github.com/spf13/cobra-cli@latest |

The binary of cobra-cli ikili dosyası aşağıdaki konumda yer almalıdır:
|
1 |
ls -l $GOPATH/bin |

Diğer paket dosyaları aşağıdaki konumda yer almalıdır:
|
1 |
ls -l $GOPATH/pkg/mod/github.com/spf13 |

Go v1.11 sürümünden itibaren, Go modülleri içe aktarmak istediğiniz paketin sürümünü tanımlar. Bu durum burada ayrıntılı olarak açıklanmıştır: Go Modülleri GitHub.
Adım 6 – Paket Takma Adları (Aliases)
Çeşitli durumlarda, yerel paketler ile içe aktarılan paketler arasında çakışan paket adlarıyla karşılaşabilirsiniz. Takma ad kullanmak (aliasing) bu çakışmayı burada çözer. Takma ad yapısı şuna benzer:
|
1 |
import <alias> "import_package_name" |
Basit Go programımızı, fmt_alias takma adını şu paket için kullanacak şekilde değiştirelim: fmt :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
package main import ( fmt_alias "fmt" "math/rand" ) func main() { for i := 0; i < 10; i++ { fmt_alias.Printf("%d) %d\n", i, rand.Intn(25)) } } |
Şuna dikkat edin: fmt.Printf() kullanmak yerine, şu paket takma adını kullanıyoruz: fmt_alias.Printf() .
Ancak Go, takma adlara pek sıcak bakmaz. İçe aktarma adı çakışmasını önlemek için takma adlar kullanırken, en yerel veya projeye özgü içe aktarmaya takma ad vermeniz önerilir. Örneğin, hem yerel bir strings paketine hem de bir sistem strings paketine sahip olmak istiyorsanız, sistem paketine değil, yerel pakete takma ad vermelisiniz.
En iyi pratik, en başta ad çakışmalarından kaçınmaktır.
Adım 7 – İçe Aktarmaları Biçimlendirme
Tüm içe aktarmaları tek bir import ifadesi kullanarak bildirmeyi öğrendik. Ya birden fazla içe aktarmanız olsaydı? Örneğin:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import ( "fmt" "os" "github.com/example/foo" "github.com/example/bar" "math/rand" "github.com/abc/pqr/xyz" ) |
İçe aktarmaları biçimlendirmek, paketleri belirli bir sıraya koyarak kodun tutarlılığını artırır. Sadece içe aktarmaların sırasını düzenlediği için rastgele commit'leri de önler. Ayrıca gereksiz kod dalgalanmasını ve kafa karıştırıcı kod incelemelerini engeller.
Çoğu modern editör, içe aktarmaları sizin için otomatik olarak biçimlendirecektir. Alternatif olarak, destekledikleri araç: goimports. Sektörde, içe aktarmaları manuel olarak sıralamak yerine goimports kullanmak yaygın bir uygulamadır. Ek olarak, goimports koddaki stil değişikliklerini de yansıtır.
İşte import bloğuna goimports uygulandıktan sonraki görünümü :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import ( fmt_alias "fmt" "math/rand" "os" "github.com/example/foo" "github.com/example/bar" "github.com/abc/pqr/xyz" ) |
Bir kalıp fark ettiniz mi?
- Öncelikle tüm standart kütüphaneler gruplandırılır.
- Gruplar boş satırlarla ayrılarak kodun okunabilirliği artırılır.
Son Düşünceler
Go'da içe aktarmalar (imports), Go'da yerleşik olmayan fonksiyonların çağrılmasını sağlayan güçlü bir özelliktir. Standart kütüphane birçok genel amaçlı paket sunarken, Go üçüncü taraf paketleri de destekler. Bu kılavuz, yerleşik ve üçüncü taraf Go paketlerinin nasıl içe aktarılacağını göstermektedir.
Bu kılavuzda, Go programlarımızı yorumlayıcıyı kullanarak çalıştırdık. Ancak, daha iyi performans için kodları bağımsız ikili dosyalara derleyebilirsiniz. Şunun hakkında daha fazla bilgi edinebilirsiniz: Go programlarını buradan derleme. Eğer Nginx ile bir Go web uygulamasını nasıl dağıtacağınızı öğrenmek isterseniz bu eğitime göz atın. Ek olarak, şunları gösteren kılavuzumuza göz atabilirsiniz: kendi Go paketlerinizi nasıl yazacağınızı.
Bir Go geliştiricisi misiniz? CloudSigma, Go API desteği sunuyor projelerinizle sorunsuz entegrasyon için.
Keyifli Kodlamalar!
Yorumlar
Henüz yorum yapılmamış. İlk siz olun.