Ürün yapısı
- Go kursu
- Başlangıç
- Ders 47/90
- 6 dk
Ü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.5Struct, 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
package main
import "fmt"
func main() {
// buraya yaz
}Örnek çözüm
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
u := Urun{Ad: "Defter", Fiyat: 20, Adet: 2}
fmt.Println(u____Ad)
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 |