CodeBlanks Logo Icon CodeBlanks

Ürün yapısı

Ürünü temsil eden bir struct tanımlarsın.

Proje: alışveriş sepeti

Bu projede ürün ekleyen, toplamı hesaplayan ve sepeti düzenli yazdıran küçük bir program kuracaksın. İlk adım veriyi modellemek: her ürünün adı, birim fiyatı ve adedi vardır.

type Urun struct {
    Ad    string
    Fiyat float64
    Adet  int
}

kalem := Urun{Ad: "Kalem", Fiyat: 12.5, Adet: 3}
fmt.Println(kalem.Ad, kalem.Fiyat*float64(kalem.Adet))  // Kalem 37.5

Struct, ilgili alanları tek bir değerde toplar; sepet ise bu değerlerden oluşan bir dilim olacak.

Ara toplam yöntemi

Ürünün ara toplamını hesaplayan bir yöntem eklemek, hesabı tek yerde toplar:

func (u Urun) AraToplam() float64 {
    return u.Fiyat * float64(u.Adet)
}

Adet bir int olduğu için çarpmadan önce float64'e çevrilir; Go farklı sayı türlerini kendiliğinden karıştırmaz.

Uygulama Ürün modeli

Urun struct'ını ve AraToplam() yöntemini yaz. Urun{Ad: "Kalem", Fiyat: 12.5, Adet: 3} için ara toplamı 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 Urun struct {
    Ad    string
    Fiyat float64
    Adet  int
}

func (u Urun) AraToplam() float64 {
    return u.Fiyat * float64(u.Adet)
}

func main() {
    k := Urun{Ad: "Kalem", Fiyat: 12.5, Adet: 3}
    fmt.Println(k.AraToplam())
}

Beklenen çıktı

37.5

Soru ve cevaplar

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

1 Alanları adıyla vermenin (<code>Urun{Ad: ..., Fiyat: ...}</code>) avantajı nedir?

  • Sıra değişse ya da alan eklense de kod doğru kalır Doğru cevap
  • Daha hızlı çalışır
  • Zorunludur
  • Bellekte daha az yer kaplar

Açıklama: Adsız yazım (Urun{"Kalem", 12.5, 3}) alan sırasına bağlıdır; adlı yazımda verilmeyen alanlar sıfır değer alır.

2 Alan erişimi

Soru
u := Urun{Ad: "Defter", Fiyat: 20, Adet: 2}
fmt.Println(u____Ad)
Cevap
u := Urun{Ad: "Defter", Fiyat: 20, Adet: 2}
fmt.Println(u.Ad)

Açıklama: Struct alanlarına nokta ile erişilir.

3 Alan ve tür

Kavram Anlamı
Ad string
Fiyat float64
Adet int
AraToplam() float64 döndürür

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