Struct oluşturma
- Go kursu
- Başlangıç
- Ders 70/90
- 4 dk
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çiAdlı 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) // 3Struct 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
package main
import "fmt"
func main() {
// buraya yaz
}Örnek çözüm
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
k := Kitap{____: "Dune", Sayfa: 412}
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 |