CodeBlanks Logo Icon CodeBlanks

Struct oluşturma

Struct değerleri oluşturmayı ve alanlara değer vermeyi öğrenirsin.

Struct oluşturma

Struct değeri üç şekilde oluşturulur:

k1 := Kitap{Title: "Dune", Sayfa: 412}  // adlı alanlar (önerilen)
k2 := Kitap{"Dune", "Herbert", 412}       // sırayla, tüm alanlar
k3 := &Kitap{Title: "Dune"}              // işaretçi

Adlı alanlarla verilmeyen alanlar sıfır değer alır (k1.Yazar == ""). Sıralı yazımda tüm alanlar verilmelidir ve struct'a alan eklendiğinde kod kırılır.

Anonim struct ve iç içe struct

Tek seferlik veri için adsız struct kullanılabilir; testlerde ve JSON yanıtlarında yaygındır:

nokta := struct{ X, Y int }{3, 4}
fmt.Println(nokta.X)  // 3

Struct alanı başka bir struct olabilir:

type Adres struct{ Sehir string }
type Kisi struct {
    Ad    string
    Adres Adres
}
k := Kisi{Ad: "Ada", Adres: Adres{Sehir: "İzmir"}}
fmt.Println(k.Adres.Sehir)

Uygulama İç içe struct

Adres (Sehir string) ve Kisi (Ad string, Adres Adres) struct'larını tanımla. Adlı alanlarla Kisi{Ad: "Ada", Adres: Adres{Sehir: "İzmir"}} oluştur ve k.Ad + " - " + k.Adres.Sehir yazdır.

Başlangıç kodu

main.go
package main

import "fmt"

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
package main

import "fmt"

type Adres struct{ Sehir string }

type Kisi struct {
    Ad    string
    Adres Adres
}

func main() {
    k := Kisi{Ad: "Ada", Adres: Adres{Sehir: "İzmir"}}
    fmt.Println(k.Ad + " - " + k.Adres.Sehir)
}

Beklenen çıktı

Ada - İzmir

Soru ve cevaplar

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

1 <code>Kitap{"Dune", 412}</code> (Yazar atlanmış) neden derlenmez?

  • 412 string değildir ve Yazar'a gider
  • İkisi de doğru Doğru cevap
  • Derlenir
  • Sıralı yazımda tüm alanlar verilmelidir

Açıklama: Sıralı yazımda alan sayısı eşleşmeli; ayrıca 412 ikinci alan olan Yazar'a (string) atanmaya çalışılır. Adlı alan yazımı bu hatayı önler.

2 Adlı alan

Soru
k := Kitap{____: "Dune", Sayfa: 412}
Cevap
k := Kitap{Title: "Dune", Sayfa: 412}

Açıklama: Adlı alan yazımında alan adı iki noktadan önce yazılır.

3 Yazım ve sonuç

Kavram Anlamı
Kitap{Title: "X"} Diğerleri sıfır
Kitap{"X", "Y", 1} Sıralı, tüm alanlar
&Kitap{} *Kitap
struct{ X int }{1} Anonim struct

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