Goder

Sample [TR] : GOLang ile Metot ve İç İçe 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 Struct Kullanımı 30th October, 2016

Sample

Sample [TR] : GOLang ile Metot ve İç İçe Struct Kullanımı

Posted on .

Merhabalar,

GOLang’ın güzel yanlarından biri metot ve fonksiyon yapılarının farklı amaçlar için genişletilmiş şekilde kullanılmasıdır. Bu makalemde metot konusu üzerine duracağım.

GOLang da metotları bir struct’ın iş parçacığı olarak kullanabileceğiniz gibi, ‘constructor method’  oluşturma amacıyla da kullanabilirsiniz. Farklı bir modern programlama üzerine kod yazdıysanız buradaki metot yapısı da size yabancı gelmeyecektir.

GOLang resmi sitesinden temel metot kullanımını inceleyebilirsiniz

Şimdi örneğimize geçebiliriz.

Örneğimde bir User struct’ı, içerisinde de Payment tipinde farklı bir struct daha kullanıyorum. Bu genel olarak programlama yaparken karşılaşabileceğiniz bir senaryodur. Bu iki struct için de birer constructor yapısı oluşturuyorum. Sonrasında User struct’ı için bir kaç metot tanımlayarak örneği kullanmaya başlıyoruz. Örnek kullanımını da iki farklı yöntemle gerçekleştiriyoruz. İlk kullanım, başlangıç değer atama yöntemiyle oluşturma, diğeriyse nesne oluşturma yöntemiyle oluşturmayı içerir.

package main

import (
	"fmt"
	"strconv"
)

func main() {

	// User creation v1

	fmt.Println("User creation v1")

	user1 := &User{
		ID:        1,
		FirstName: "Cihan",
		LastName:  "Özhan",
		UserName:  "CihanOzhan",
		Age:       28,
		Pay: &Payment{
			Salary: 2.550,
			Bonus:  700,
		},
	}

	// fmt.Println(user1.Pay)
	fmt.Println(user1.GetUserName())
	fmt.Println(user1.GetFullName())
	fmt.Println("Maaş : " + strconv.FormatFloat(user1.GetPayment(), 'g', -1, 64))
	// Not : Maaşı gösterebilmek için float64 veri tipini string'e dönüştürdük.

	fmt.Println("\n")

	// User creation v2

	fmt.Println("User creation v2")

	user2 := NewUser()
	user2.FirstName = "Cihan"
	user2.LastName = "Özhan"
	user2.Age = 28
	user2.UserName = "GODER"

	// Payment creation v1

	// user2.Pay.Salary = 65
	// user2.Pay.Bonus = 323

	// Payment creation v2

	user2.Pay = &Payment{Salary: 765, Bonus: 495}
	fmt.Println(user2.Pay)
	fmt.Println(user2.GetUserName())
	fmt.Println(user2.GetFullName())
	fmt.Println("Maaş : " + strconv.FormatFloat(user2.GetPayment(), 'g', -1, 64))
	// Not : Maaşı gösterebilmek için float64 veri tipini string'e dönüştürdük.
}

type User struct {
	ID        int
	FirstName string
	LastName  string
	UserName  string
	Age       int
	Pay       *Payment
}

// User constructor
func NewUser() *User {
	u := new(User)
	u.Pay = NewPayment()
	return u
}

type Payment struct {
	Salary float64
	Bonus  float64
}

// Payment constructor
func NewPayment() *Payment {
	p := new(Payment)
	return p
}

func (u User) GetFullName() string {
	return u.FirstName + " " + u.LastName
}

func (u *User) GetUserName() string {
	return u.UserName
}

func (u *User) GetPayment() float64 {
	pay := u.Pay.Salary + u.Pay.Bonus
	return pay
}

golang-metod

 

 

 

 

Kaynak : http://www.cihanozhan.com/golang-ile-metot-ve-ic-ice-struct-kullanimi/

İyi çalışmalar.

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