CodeBlanks Logo Icon CodeBlanks

Özet - Struct

Struct, embedding ve pointer'ı birleştirerek bir kişi kaydı yazarsın.

Struct özeti

Struct'lar Go'nun veri modelidir: type Ad struct { ... } ile tanımlanır, adlı alanlarla oluşturulur, atamada kopyalanır, karşılaştırılabilir alanlarla == destekler. İşaretçiyle (&T{}, p.Alan) paylaşılır ve değiştirilir. Embedding ile başka struct'ların alanları yükseltilir; etiketler kütüphanelere bilgi verir.

Struct dilimi üzerinde işlem

Gerçek programlarda struct'lar çoğunlukla dilimlerde tutulur ve filtrelenir:

var uzun []Kitap
for _, k := range kitaplar {
    if k.Sayfa > 300 {
        uzun = append(uzun, k)
    }
}

slices.SortFunc(kitaplar, func(a, b Kitap) int { return a.Sayfa - b.Sayfa }) ise struct dilimini bir alana göre sıralar.

Uygulama Sıralı kitaplar

Kitap (Title string, Sayfa int) dilimini {"Dune", 412}, {"Simyacı", 184}, {"Vakıf", 255} ile oluştur. slices.SortFunc ile sayfaya göre artan sırala ve başlıkları sırayla tek satırda yazdır.

Başlangıç kodu

main.go
package main

import (
    "fmt"
    "slices"
)

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
package main

import (
    "fmt"
    "slices"
)

type Kitap struct {
    Title string
    Sayfa  int
}

func main() {
    kitaplar := []Kitap{{"Dune", 412}, {"Simyacı", 184}, {"Vakıf", 255}}
    slices.SortFunc(kitaplar, func(a, b Kitap) int { return a.Sayfa - b.Sayfa })
    for _, k := range kitaplar {
        fmt.Print(k.Title, " ")
    }
    fmt.Println()
}

Beklenen çıktı

Simyacı Vakıf Dune

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bir struct'ı <code>fmt.Printf("%+v", k)</code> ile yazdırınca ne görülür?

  • Yalnızca değerler
  • Bellek adresi
  • JSON
  • Alan adlarıyla değerler: {Title:Dune Sayfa:412} Doğru cevap

Açıklama: %v yalnızca değerleri, %+v alan adlarını da, %#v Go sözdizimini gösterir.

2 Alanlarla yazdır

Soru
fmt.Printf("____
", Kitap{"Dune", 412})  // {Title:Dune Sayfa:412}
Cevap
fmt.Printf("%+v
", Kitap{"Dune", 412})  // {Title:Dune Sayfa:412}

Açıklama: %+v struct'ı alan adlarıyla birlikte yazdırır.

3 Grubun özeti

Kavram Anlamı
type T struct Tanım
T{Alan: x} Adlı oluşturma
Embedding Kompozisyon
p.Alan Otomatik çözme

Başlangıç bölümündeki tüm dersler