Merge pull request #416 from pasali/feature-turkish-chapter-two
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