/tr/01.2.md
Markdown | 151 lines | 101 code | 50 blank | 0 comment | 0 complexity | 3e78bb10c7066de680db337c66cf5da8 MD5 | raw file
- #1.2 $GOPATH ve Çalışma Ortamı
- ## $GOPATH
- 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ğıdaji 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 dizinleri
- 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.
- ## Paketleri derleme
- Yukarıda ilk paketimizi oluşturmuştuk, peki projelerimizde kullanmak için nasıl derleyeceğiz? İki şekilde yapabiliriz:
- 1. Paket dizinin içindeyken `go install` komutunu çalıştırarak.
- 2. 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
- Üçü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"
-
- ## Dizin yapısı
- 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 .)
- ## Linler
- - [İçeriik](preface.md)
- - Önceki bölüm: [Kurulum](01.1.md)
- - Sonraki bölüm: [Go komutları](01.3.md)