CodeBlanks Logo Icon CodeBlanks

Struct tanımı

type ile struct tanımlamayı öğrenirsin.

Struct tanımı

Struct, ilgili verileri adlandırılmış alanlar hâlinde bir araya getiren türdür:

type Kitap struct {
    Title string
    Yazar  string
    Sayfa  int
}

Büyük harfle başlayan alanlar paket dışından (ve JSON gibi kütüphanelerden) görünür; küçük harfle başlayanlar yalnızca paket içindedir. Go'da sınıf yoktur; veri struct'larla, davranış yöntemlerle ifade edilir.

Struct karşılaştırma

Tüm alanları karşılaştırılabilir olan struct'lar == ile karşılaştırılabilir ve map anahtarı olabilir. Struct atandığında tüm alanları kopyalanır:

a := Kitap{"Dune", "Herbert", 412}
b := a
b.Sayfa = 500
fmt.Println(a.Sayfa, a == b)  // 412 false

Dilim veya map alanı olan struct'lar == ile karşılaştırılamaz.

Uygulama Kitap struct'ı

Kitap struct'ını (Title, Yazar, Sayfa) tanımla. a := Kitap{"Dune", "Herbert", 412} oluştur, b := a ile kopyala, b.Sayfa = 500 yap ve a.Sayfa, b.Sayfa değerlerini 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 Kitap struct {
    Title string
    Yazar  string
    Sayfa  int
}

func main() {
    a := Kitap{"Dune", "Herbert", 412}
    b := a
    b.Sayfa = 500
    fmt.Println(a.Sayfa, b.Sayfa)
}

Beklenen çıktı

412 500

Soru ve cevaplar

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

1 <code>var k Kitap</code> tanımından sonra <code>k.Sayfa</code> kaçtır?

  • 0 Doğru cevap
  • nil
  • Tanımsız
  • Derleme hatası

Açıklama: Struct'ın her alanı kendi sıfır değeriyle başlar: string "", int 0.

2 Struct türü

Soru
type Nokta ____ {
    X, Y int
}
Cevap
type Nokta struct {
    X, Y int
}

Açıklama: type Ad struct { ... } yeni bir struct türü tanımlar.

3 Alan ve görünürlük

Kavram Anlamı
Title Dışa aktarılmış
sayfa Paket içi
var k Kitap Sıfır değerli alanlar
b := a Tüm alanlar kopyalanır

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