Skip to content

Commit 8a6cc34

Browse files
committed
Merge pull request astaxie#416 from pasali/feature-turkish-chapter-two
second chapter in Turkish
2 parents b04718c + 13b1c59 commit 8a6cc34

File tree

1 file changed

+151
-0
lines changed

1 file changed

+151
-0
lines changed

tr/01.2.md

+151
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
#1.2 $GOPATH ve Çalışma Ortamı
2+
3+
## $GOPATH
4+
5+
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).
6+
7+
Unix türevi işletim sistemlerinde, aşağıdaji komutla değişkeni ayarlayabilirsiniz:
8+
9+
export GOPATH=/home/apple/mygo
10+
11+
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.
12+
13+
$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.
14+
15+
$GOPATH içinde aşağıdaki üç dizinden oluşur:
16+
17+
- `src` -> kaynak dosyalar için(.go, .c vb uzantılı)
18+
- `pkg` -> derlenmiş dosyalar için(.a uzantılı)
19+
- `bin` -> çalıştırılabilir dosyalar için
20+
21+
Bu kitapta, `mygo` dizini $GOPATH'in gösterdiği çalışma ortamı olacak.
22+
23+
## Paket dizinleri
24+
25+
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***)
26+
27+
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.
28+
29+
Terminalinizde aşağıdaki komutları çalıştırın. ( ***Bu kısımda örneklerden bahsedeceğiz*** )
30+
31+
cd $GOPATH/src
32+
mkdir mymath
33+
34+
`sqrt.go` isminde bir dosya oluşturun, aşağıdaki kod bloğunu ekleyin.
35+
36+
//$GOPATH/src/mymath/sqrt.go kaynak kodu
37+
package mymath
38+
39+
func Sqrt(x float64) float64 {
40+
z := 0.0
41+
for i := 0; i < 1000; i++ {
42+
z -= (z*z - x) / (2 * x)
43+
}
44+
return z
45+
}
46+
47+
Yukarıdaki adımların sonunda ilk paketimizi oluşturmuş olduk. Paket isimlerinin bulundukları dizinin adı ile aynı olmasına özen gösterin.
48+
49+
## Paketleri derleme
50+
51+
Yukarıda ilk paketimizi oluşturmuştuk, peki projelerimizde kullanmak için nasıl derleyeceğiz? İki şekilde yapabiliriz:
52+
53+
1. Paket dizinin içindeyken `go install` komutunu çalıştırarak.
54+
2. Herhangi bir dizindeyken `go install mymath` komutunu çalıştırarak.
55+
56+
Derleme işlemi bittikten sonra, aşağıdaki komutları çalıştırırsanız.
57+
58+
cd $GOPATH/pkg/${GOOS}_${GOARCH}
59+
// derlenmiş halinin oluştuğunu görebilirsiniz
60+
mymath.a
61+
62+
`.a` uzantılı dosya paketimizin binary halini içeriyor. Peki bu dosyayı nasıl kullanacağız?
63+
64+
Öncelikle yeni bir uygulama oluşturmalıyız.
65+
66+
`mathapp` adında yeni bir uygulama oluşturun.
67+
68+
cd $GOPATH/src
69+
mkdir mathapp
70+
cd mathapp
71+
vim main.go
72+
73+
Kaynak kod:
74+
75+
//$GOPATH/src/mathapp/main.go
76+
package main
77+
78+
import (
79+
"mymath"
80+
"fmt"
81+
)
82+
83+
func main() {
84+
fmt.Printf("Merhaba, dünya. Sqrt(2) = %v\n", mymath.Sqrt(2))
85+
}
86+
87+
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.
88+
89+
Merhaba, dünya. Sqrt(2) = 1.414213562373095
90+
91+
## Üçüncü-parti paketleri kurmak
92+
93+
Üçüncü-parti paketleri kurmak için `go get` komutunu kullanabilirsiniz. Bir çok açık-kaynak platformu destekliyor; Github, Google Code, BitBucket, ve Launchpad.
94+
95+
go get github.com/astaxie/beedb
96+
97+
`go get -u …` kullanarak var olan paketlerinizi güncelleyebilirsiniz ve aynı zamanda bağımlılıklarıda otomatik olarak yükleyecektir.
98+
99+
`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.
100+
101+
Yukarıdaki komutları çalıştırdıktan sonra, çalışma ortamınız aşağıdaki dizin yapısına sahip olacaktır.
102+
103+
$GOPATH
104+
src
105+
|-github.com
106+
|-astaxie
107+
|-beedb
108+
pkg
109+
|--${GOOS}_${GOARCH}
110+
|-github.com
111+
|-astaxie
112+
|-beedb.a
113+
114+
Aslında, `go get` kaynak kodu çalışma ortamınızdaki `src` dizinine kopyalayıp, `go install` komutunu çalıştırıyor.
115+
116+
Üçüncü-parti paketleri aşağıdaki gibi kullanabilirsiniz.
117+
118+
import "github.com/astaxie/beedb"
119+
120+
## Dizin yapısı
121+
122+
Yukardaki adımları tamamladıysanız, çalışma ortamınızdaki dizin yapısı aşağıdaki gibi olacaktır.
123+
124+
bin/
125+
mathapp
126+
pkg/
127+
${GOOS}_${GOARCH}, such as darwin_amd64, linux_amd64
128+
mymath.a
129+
github.com/
130+
astaxie/
131+
beedb.a
132+
src/
133+
mathapp
134+
main.go
135+
mymath/
136+
sqrt.go
137+
github.com/
138+
astaxie/
139+
beedb/
140+
beedb.go
141+
util.go
142+
143+
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.
144+
145+
(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 .)
146+
147+
## Linler
148+
149+
- [İçeriik](preface.md)
150+
- Önceki bölüm: [Kurulum](01.1.md)
151+
- Sonraki bölüm: [Go komutları](01.3.md)

0 commit comments

Comments
 (0)