-- Go

Go ile Paket Yapısı ve Yeni Paket Oluşturma

Merhabalar,

Bu makalede GO programlama dilinin en temel özelliklerinden biri olan paket mantığını inceleyeceğiz. GO’da paket kullanımı Java programlama dilindeki paket ve C# programlama dilindeki namespace mantığına benzemektedir.

Şimdi hazırlayacağım paket ve klasör yapısı aşağıdaki gibidir;

packing                      (ana proje klasörü)
– stringutil                 (klasör)
—— process.go     (dosya)
—— reserve.go       (dosya)
– main.go                    (dosya)

GO dosyalarımımızı farklı klasörler içerisinde farklı isimlerle oluşturmamız mümkündür. Ancak temel olarak dikkat edilmesi gereken şey, projenin derleme aşamasında paket isimlerini kontrol ettiğidir. Bu da fiziksel değil soyut nesne isimleriyle gerçekleştirilmektedir.

process.go

package stringutil

var ProcessType = "String Reverse"

reverse.go

package stringutil

func Reverse(s string) (string, string) {
	r := []rune(s)
	for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {
		r[i], r[j] = r[j], r[i]
	}
	return string(r), ProcessType
}

main.go

Bilindiği üzere projemizin ana dosyasıdır. Bir paketi projenize dahil etmek için import yöntemini kullanırız. Burada üç farklı yöntem kullanarak import işlemi yaptık. İlki GO kurulurken built-in olarak gelen gömülü fmt paketidir. Sonraki bizim geliştirdiğimiz ve stringutil adındaki bir klasör altında bulunan bir kaç dosyadan oluşan ve paket isimlerinin de stringutil olduğu bir kullanıcı tanımlı pakettir. Bu dosya fiziksel olarak bilgisayarımızda bulunduğu için “./” şeklinde bir tanımlama ile dosya yol bilgisini import edebildik. Son olarak ise standart olarak bir github linkini projeye import ettik. Tabi github gibi bir versiyon kontrol sistemi üzerinden projeye paket ekleyebilsek de burada yapmamız gereken temel bir işlem var ki o da “go get” ile paketi bilgisayarımıza indirmektir. Aksi halde kaynak kodları bulamayacağı için hata verecektir.

Bu nedenle aşağıdaki komutu çalıştırın;

“go get github.com/fatih/color”

package main

import (
	"fmt"

	"./stringutil"
	"github.com/fatih/color"
)

func main() {

	res, processType := stringutil.Reverse("!nahzO nahiC")

	fmt.Println(res)
	fmt.Println("Islem : " + processType)
	fmt.Println(stringutil.ProcessType)
	color.Red("We have red")
}

Uygulamayı çalıştırdığınızda ad soyad bilgisi ve işlemin tipini ekranda yazacaktır.

C:\_GO\packing>go run main.go
Cihan Ozhan!
Islem : String Reverse
String Reverse
We have red

@Medium

İyi çalışmalar.
Cihan Özhan

Yorumla

Yorum