Skip to content

Latest commit

 

History

History
151 lines (101 loc) · 5.57 KB

File metadata and controls

151 lines (101 loc) · 5.57 KB

#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ğıdaki 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 .)

Linkler