second chapter in Turkish
This commit is contained in:
151
tr/01.2.md
Normal file
151
tr/01.2.md
Normal file
@@ -0,0 +1,151 @@
|
||||
#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)
|
||||
Reference in New Issue
Block a user