PageRenderTime 45ms CodeModel.GetById 16ms RepoModel.GetById 1ms app.codeStats 0ms

/tr/01.2.md

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