Yazılım Dersleri ve Teknoloji Forumu - Gihya

Yazılım Dersleri => Golang => Konuyu başlatan: Gihya - Nis 06, 2025, 06:11 ÖS

Başlık: Golang Struct Kullanımı: Detaylı Rehber ve Kod Örnekleri
Gönderen: Gihya - Nis 06, 2025, 06:11 ÖS

Go (Golang), basitliği ve performansıyla öne çıkan bir programlama dilidir. Golang'da veri yapılarını tanımlamak için struct (yapı) kavramı sıkça kullanılır. Struct'lar, farklı veri tiplerini bir araya getirerek özelleştirilmiş veri modelleri oluşturmanıza olanak tanır. Bu yazıda, Golang struct kullanımını detaylı bir şekilde ele alacak, SEO uyumlu bir rehber sunacak ve özgün kod örnekleriyle konuyu pekiştireceğiz.

Golang Struct Nedir?
Golang'da struct, birbiriyle ilişkili verileri tek bir birim altında toplamak için kullanılan bir veri yapısıdır. C dilindeki yapılara benzer, ancak Go'nun modern yaklaşımıyla daha esnek ve güçlü bir hale getirilmiştir. Struct'lar, nesne yönelimli programlamada (OOP) sınıflara benzer bir rol oynar, ancak Go'da kalıtım (inheritance) yerine kompozisyon (composition) tercih edilir.

Temel Özellikleri:

SEO açısından, "Golang struct kullanımı" gibi anahtar kelimelerle optimize edilmiş bir içerik, Go geliştiricileri için değerli bir kaynak olabilir.

Struct Nasıl Tanımlanır?
Bir struct tanımlamak için type anahtar kelimesi ve ardından alanlar (fields) belirtilir. İşte basit bir örnek:

Örnek 1: Basit Struct Tanımlama
package main

import "fmt"

type Person struct {
    Name    string
    Age     int
    Email   string
}

func main() {
    // Struct örneği oluşturma
    p := Person{
        Name:  "Ali",
        Age:   30,
        Email: "[email protected]",
    }

    fmt.Println("Kişi Bilgileri:", p.Name, p.Age, p.Email)
}


Bu örnekte, Person adında bir struct tanımladık ve Name, Age, Email gibi alanlar ekledik. Struct'ı başlatırken alan isimlerini açıkça belirttik.

Struct'larda Varsayılan Değerler ve Kısmi Başlatma
Go'da struct'lar, alanlar belirtilmediğinde varsayılan değerlerle (zero values) başlatılır: 0 (int için), "" (string için), vb.

Örnek 2: Kısmi Başlatma
package main

import "fmt"

type Book struct {
    Title  string
    Author string
    Pages  int
}

func main() {
    b := Book{
        Title: "Go Programlama",
    }

    fmt.Println("Kitap:", b.Title, b.Author, b.Pages)
}


Burada sadece Title alanını doldurduk; diğer alanlar varsayılan değerleriyle kaldı.

Struct'lara Metot Ekleme
Go'da struct'lara davranış eklemek için metotlar tanımlanabilir. Bu, struct'ı bir tür nesne gibi kullanmanızı sağlar.

Örnek 3: Struct ile Metot Kullanımı
package main

import "fmt"

type Rectangle struct {
    Width  float64
    Height float64
}

// Alan hesaplama metodu
func (r Rectangle) Area() float64 {
    return r.Width * r.Height
}

func main() {
    rect := Rectangle{Width: 10.5, Height: 5.0}
    area := rect.Area()

    fmt.Println("Dikdörtgen Alanı:", area)
}


Area metodu, Rectangle struct'ına bağlı bir davranış olarak tanımlandı. (r Rectangle) ifadesi, metodun bu struct ile ilişkili olduğunu belirtir.

İç İçe Struct Kullanımı (Nested Structs)
Struct'lar, başka struct'ları içerebilir. Bu, karmaşık veri modelleri oluşturmak için idealdir.

Örnek 4: İç İçe Struct
package main

import "fmt"

type Address struct {
    City    string
    Country string
}

type Employee struct {
    Name    string
    ID      int
    Address Address
}

func main() {
    emp := Employee{
        Name: "Ayşe",
        ID:   101,
        Address: Address{
            City:    "İstanbul",
            Country: "Türkiye",
        },
    }

    fmt.Printf("Çalışan: %s, Şehir: %s\n", emp.Name, emp.Address.City)
}

Bu yapı, SEO açısından "Golang iç içe struct" gibi aramalarda hedeflenebilir.

SEO Uyumlu Struct Kullanımı İpuçları

Sonuç
Golang struct'lar, veri yapılarını düzenli ve etkili bir şekilde yönetmek için güçlü bir araçtır. Basit tanımlamalardan iç içe yapılara ve metotlarla zenginleştirilmiş modellere kadar geniş bir kullanım yelpazesine sahiptir. Yukarıdaki kod örnekleri, Golang'da struct'ları nasıl kullanacağınızı anlamanıza yardımcı olacak pratik bir başlangıç sunar.