Toplam hesaplama
- Go kursu
- Başlangıç
- Ders 49/90
- 6 dk
range ile sepetin toplam tutarını hesaplarsın.
Toplam hesaplama
Sepet toplamı, her ürünün ara toplamının toplamıdır. range ile ürünleri gez ve biriktir:
func (s Sepet) Toplam() float64 {
t := 0.0
for _, u := range s.Urunler {
t += u.AraToplam()
}
return t
}Burada değer alıcı yeterlidir çünkü sepet yalnızca okunur.
İndirim kuralı
İş kuralları da yöntem olarak eklenir. Örneğin 100 TL üzeri alışverişte %10 indirim:
func (s Sepet) Odenecek() float64 {
t := s.Toplam()
if t > 100 {
return t * 0.9
}
return t
}Kuralı ayrı bir yöntemde tutmak, kural değiştiğinde yalnızca tek yeri düzenlemeni sağlar.
Uygulama Toplam ve indirim
Urun (ve AraToplam), Sepet, Toplam ve Odenecek yöntemlerini yaz. Sepette Kalem 12.5 × 5 ve Çanta 80 × 1 olsun; toplamı ve ödenecek tutarı tek satırda 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) }
type Sepet struct{ Urunler []Urun }
func (s Sepet) Toplam() float64 {
t := 0.0
for _, u := range s.Urunler {
t += u.AraToplam()
}
return t
}
func (s Sepet) Odenecek() float64 {
t := s.Toplam()
if t > 100 {
return t * 0.9
}
return t
}
func main() {
s := Sepet{Urunler: []Urun{{"Kalem", 12.5, 5}, {"Çanta", 80, 1}}}
fmt.Println(s.Toplam(), s.Odenecek())
}Beklenen çıktı
142.5 128.25
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 <code>t := 0.0</code> yerine <code>t := 0</code> yazılırsa ne olur?
- Sonuç yuvarlanır
- t nil olur
- t int olur ve t += float64 derleme hatası verir Doğru cevap
- Fark etmez
Açıklama: := türü değerden çıkarır; 0 int, 0.0 float64 verir. Go int ile float64'ü karıştırmaz.
2 Biriktir
for _, u := range s.Urunler {
t ____ u.AraToplam()
}
for _, u := range s.Urunler {
t += u.AraToplam()
}
Açıklama: t += x, t'ye x ekleyip sonucu yine t'ye yazar.
3 Sepet ve sonuç
| Kavram | Anlamı |
|---|---|
Kalem 12.5 × 5 |
62.5 |
Defter 20 × 1 |
20 |
Toplam |
82.5 |
Toplam > 100 |
%10 indirim |