Goder

Sample [TR] : GOLang ile Struct Kullanımı

Introduction

Cihan Özhan

Cihan Özhan

Hakkımda bilgi içeren blog sayfam; http://www.cihanozhan.com/cihan-ozhan/


LATEST POSTS

Sample [TR] : GOLang ile Inheritance ve Interface Kullanımı 31st October, 2016

Sample [TR] : GOLang ile Metot ve İç İçe Struct Kullanımı 30th October, 2016

Sample

Sample [TR] : GOLang ile Struct Kullanımı

Posted on .

Merhabalar,

Modern programlama(C#, Java vb.) dillerinde sıklıkla karşımıza çıkan bir yapı vardır; Class(Sınıf). Sınıflar, içerisinde değişken(field), özellik(Property, C#’da) ve metodlar gibi iş süreçlerini yönetmemizi ve organize etmemizi sağlayan nesne türlerini içerir. Ancak sınıflar GOLang da aynı isimle kullanılmıyorlar. GOLang, sınıf yerine struct isimli nesne türünü kullanır. Kullanımı temel ve amaç olarak sınıflarla aynıdır. Şimdi, C# geliştiricilerinin aklına C# da bulunan struct nesne türü gelecektir ki, benzetmekte haklısınız… C# da struct yapısı sınıflara göre daha hızlı ve performanslı çalışır. Ancak şimdi C#’da ki struct ve sınıf yapısını bir kenara bırakarak, GOLang da bulunan ve sınıflar yerine kullanılan struct yapısına bir bakalım.

GOLang da struct’lar type ve struct nesnesiyle birlikte tanımlanırlar.

type Human struct {
	FirstName string
	LastName  string
	Age       int
}

Yukarıda bir struct’ın en temel halini örnekledik. Şimdi bu özelliği daha detaylı inceleyelim.

package main

import (
	"fmt"
	"strconv"
)

type Human struct {
	FirstName string
	LastName  string
	Age       int
}

// GO'da Constructor nasıl tanımlanır?
// GOLang native olarak constructor yapısını desteklemez!
// Ancak constructor metod oluşturmanın bir yöntemi vardır.

func NewHuman(firstName, lastName string) *Human {
	h := new(Human)
	h.FirstName = firstName
	h.LastName = lastName
	return h
}

// Parametresiz olarak da constructor metod yaklaşımı uygulanabilir. Ancak aynı isimde iki metod kullanılamaz.
// Çünkü GOLang metod overload'ı desteklemez.

// func NewHuman() *Human {
//	 h := new(Human)
//	 return h
// }

func main() {

	// Nesne örneği oluşturma

	// v1 : Başlangıç değeriyle Human nesne örneği oluşturma.

	humX := Human{FirstName: "Hakkı"}
	fmt.Println(humX.FirstName)

	// v2 : new() ile Human nesne örneği oluşturma.

	humY := new(Human)
	fmt.Println(humY.Age)

	// GO'da Constructor nasıl kullanılır?

	x := NewHuman("CO", "H")
	fmt.Println(x)

	// Human struct'ını kullanalım...

	hum1 := Human{"Cihan", "Özhan", 28}
	hum2 := Human{FirstName: "Cihan", Age: 28}

	// hum1
	fmt.Println(hum1)
	fmt.Println(hum1.FirstName + " " + hum1.LastName + " / " + strconv.Itoa(hum1.Age))
	fmt.Println(hum1.FirstName)
	// Not : strconv.Itoa() ile "int to string" işlemi yapmadan int ile string türleri birleştirilemez.

	// hum2
	fmt.Println(hum2)

	// Pointer ile kullan
	pot := Human{FirstName: "Murtaza", LastName: "Kılkuyruk", Age: 57}
	fmt.Println(pot.FirstName)

	// Pointer kullanılmayan pot nesnesi...

	println("Pointer kullanılmayan pot nesnesi...")

	point1 := pot
	fmt.Println(point1)
	fmt.Println(pot)
	point1.Age = 99
	fmt.Println(point1)
	fmt.Println(pot)

	// Pointer kullanılan pot nesnesi...

	println("Pointer kullanılan pot nesnesi...")

	point2 := &pot
	fmt.Println(point2)
	fmt.Println(pot)
	point2.Age = 99
	fmt.Println(point2)
	fmt.Println(pot) // pointer kullanımında pot da değişir.
}

Kaynak : http://www.cihanozhan.com/golang-ile-struct-kullanimi/

İyi çalışmalar.
Cihan Özhan

Cihan Özhan

Cihan Özhan

http://www.cihanozhan.com

Hakkımda bilgi içeren blog sayfam; http://www.cihanozhan.com/cihan-ozhan/

There are no comments.

Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

View Comments (0) ...
Navigation