#1.2 $GOPATH ve Çalışma Ortamı
Go komutları, önemli bir ortam değişkeni olan $GOPATH üzerinden çalışır. Bu değişkeni Go'nun kurulu olduğu dizini veren $GOROOT ile karıştırmayın. Bu değişken bilgisayarınızdaki Go çalışma ortamının hangi dizinde olduğunu gösterir (Aşağıdaki dizin yapısı örnek olarak verilmiştir, siz kendinize göre dizin yolunu değiştirebilirsiniz).
Unix türevi işletim sistemlerinde, aşağıdaki komutla değişkeni ayarlayabilirsiniz:
export GOPATH=/home/apple/mygo
Windows'da ise, GOPATH adında bir ortam değişkeni oluşturup, değerini c:\mygo
( ya da sizin istediğiniz herhangi bir yer ) olarak atayabilirsiniz.
$GOPATH içinde birden fazla dizin yolu(çalışma ortamı) olabilir, dizinleri :
ayırabilirsiniz(Windows'da;
). Birden fazla çalışma ortamınız var ise go get
indirdiği içeriği $GOPATH'teki ilk dizine yazacaktır.
$GOPATH içinde aşağıdaki üç dizinden oluşur:
src
-> kaynak dosyalar için(.go, .c vb uzantılı)pkg
-> derlenmiş dosyalar için(.a uzantılı)bin
-> çalıştırılabilir dosyalar için
Bu kitapta, mygo
dizini $GOPATH'in gösterdiği çalışma ortamı olacak.
Paket ve kaynak dosyaları $GOPATH/src/mymath/sqrt.go
şeklinde oluşturun (mymath
paketin ismidir) ( mymath
paket ismi değişebilir, fakat paket ismi ve paketleri oluşturan kaynak kodların bulunduğu dizinin ismi aynı olmalıdır)
Her paket için src
altında yeni bir dizin oluşturmalısınız. Dizin isimleri genelde paket ismiyle aynı olur/olmalıdır. Paket oluştururken iç içe dizinler açabilirsiniz. Örneğin, eğer $GOPATH/src/github.com/astaxie/beedb
dizini oluşturursanız, paket yolu github.com/astaxie/beedb
olacaktır. Paket ismi ise en son dizinin ismi olacaktır, önceki örnekte beedb
paket ismi olacaktır.
Terminalinizde aşağıdaki komutları çalıştırın. ( Bu kısımda örneklerden bahsedeceğiz )
cd $GOPATH/src
mkdir mymath
sqrt.go
isminde bir dosya oluşturun, aşağıdaki kod bloğunu ekleyin.
//$GOPATH/src/mymath/sqrt.go kaynak kodu
package mymath
func Sqrt(x float64) float64 {
z := 0.0
for i := 0; i < 1000; i++ {
z -= (z*z - x) / (2 * x)
}
return z
}
Yukarıdaki adımların sonunda ilk paketimizi oluşturmuş olduk. Paket isimlerinin bulundukları dizinin adı ile aynı olmasına özen gösterin.
Yukarıda ilk paketimizi oluşturmuştuk, peki projelerimizde kullanmak için nasıl derleyeceğiz? İki şekilde yapabiliriz:
- Paket dizinin içindeyken
go install
komutunu çalıştırarak. - Herhangi bir dizindeyken
go install mymath
komutunu çalıştırarak.
Derleme işlemi bittikten sonra, aşağıdaki komutları çalıştırırsanız.
cd $GOPATH/pkg/${GOOS}_${GOARCH}
// derlenmiş halinin oluştuğunu görebilirsiniz
mymath.a
.a
uzantılı dosya paketimizin binary halini içeriyor. Peki bu dosyayı nasıl kullanacağız?
Öncelikle yeni bir uygulama oluşturmalıyız.
mathapp
adında yeni bir uygulama oluşturun.
cd $GOPATH/src
mkdir mathapp
cd mathapp
vim main.go
Kaynak kod:
//$GOPATH/src/mathapp/main.go
package main
import (
"mymath"
"fmt"
)
func main() {
fmt.Printf("Merhaba, dünya. Sqrt(2) = %v\n", mymath.Sqrt(2))
}
Uygulamyı derlemek için, $GOPATH/src/mathapp
dizinine geçip, go install
komutunu çalıştırın. $GOPATH/bin/
altında mathapp
dizinin oluştuğunu göreceksiniz. Uygulamanızı çalıştırmak için, ./mathapp
komutunu çalıştırın. Aşağıdaki gibi bir çıktı alıyor olmanız lazım.
Merhaba, dünya. Sqrt(2) = 1.414213562373095
Üçüncü-parti paketleri kurmak için go get
komutunu kullanabilirsiniz. Bir çok açık-kaynak platformu destekliyor; Github, Google Code, BitBucket, ve Launchpad.
go get github.com/astaxie/beedb
go get -u …
kullanarak var olan paketlerinizi güncelleyebilirsiniz ve aynı zamanda bağımlılıklarıda otomatik olarak yükleyecektir.
go get
versiyon kontrol sistemleri üzerinden çalışmaktadır. Bu yüzden go get
'i kullanabilmek için git
, hg
gibi yazılımları kurmuş olmanız gerekmektedir.
Yukarıdaki komutları çalıştırdıktan sonra, çalışma ortamınız aşağıdaki dizin yapısına sahip olacaktır.
$GOPATH
src
|-github.com
|-astaxie
|-beedb
pkg
|--${GOOS}_${GOARCH}
|-github.com
|-astaxie
|-beedb.a
Aslında, go get
kaynak kodu çalışma ortamınızdaki src
dizinine kopyalayıp, go install
komutunu çalıştırıyor.
Üçüncü-parti paketleri aşağıdaki gibi kullanabilirsiniz.
import "github.com/astaxie/beedb"
Yukardaki adımları tamamladıysanız, çalışma ortamınızdaki dizin yapısı aşağıdaki gibi olacaktır.
bin/
mathapp
pkg/
${GOOS}_${GOARCH}, such as darwin_amd64, linux_amd64
mymath.a
github.com/
astaxie/
beedb.a
src/
mathapp
main.go
mymath/
sqrt.go
github.com/
astaxie/
beedb/
beedb.go
util.go
Yukarıdaki yapından açık şekilde görüldüğü gibi; bin
çalıştırılabilir dosyaları, pkg
derlenmiş dosyaları ve src
kaynak dosyaları içermektedir.
(Windows'daki ortam değişkenlerinin formatı %GOPATH%
şeklinde olmalıdır, bu kitap unix türevi sistemler üzerinden anlatılmaktadır, bu sebeble Windows kullanıcıları kendi sistemlerine uygun formatı kullanmalıdır .)
- İçeriik
- Önceki bölüm: Kurulum
- Sonraki bölüm: Go komutları