Çarpma ve bölme
- Go kursu
- Başlangıç
- Ders 27/90
- 6 dk
Çarpma, bölme ve sıfır kontrolü eklersin.
Çarpma ve bölme
Çarpma diğerleri gibi basittir. Bölmede ise sıfıra bölmeyi ele almak gerekir: float64 ile sıfıra bölmek hata vermez, +Inf üretir; bu da kullanıcıya anlamsız bir sonuç gösterir. Bu yüzden bölen kontrol edilip hata döndürülür:
func bol(a, b float64) (float64, error) {
if b == 0 {
return 0, errors.New("sıfıra bölünemez")
}
return a / b, nil
}Hatayı kontrol etmek
Hata döndüren bir fonksiyonu çağırırken önce hatayı kontrol et, sonucu ancak hata yoksa kullan:
sonuc, err := bol(10, 0)
if err != nil {
fmt.Println("hata:", err)
return
}
fmt.Println(sonuc)Bu "önce hata" deseni Go'nun her yerinde karşına çıkar.
Uygulama Güvenli bölme
bol(a, b float64) (float64, error) fonksiyonunu yaz. bol(9, 2) sonucunu ve bol(1, 0) çağrısının hatasını ayrı satırlarda yazdır.
Başlangıç kodu
package main
import (
"errors"
"fmt"
)
func main() {
// buraya yaz
}Örnek çözüm
package main
import (
"errors"
"fmt"
)
func bol(a, b float64) (float64, error) {
if b == 0 {
return 0, errors.New("sıfıra bölünemez")
}
return a / b, nil
}
func main() {
s, _ := bol(9, 2)
fmt.Println(s)
_, err := bol(1, 0)
fmt.Println(err)
}Beklenen çıktı
4.5 sıfıra bölünemez
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Go'da <code>5.0 / 0.0</code> ne üretir?
- panic
- 0
- Derleme hatası
- +Inf Doğru cevap
Açıklama: Ondalık bölme IEEE 754 kuralını izler ve sonsuz verir; tam sayıyı sıfıra bölmek ise panic üretir.
2 Sıfır kontrolü
if b ____ 0 {
return 0, errors.New("sıfıra bölünemez")
}
if b == 0 {
return 0, errors.New("sıfıra bölünemez")
}
Açıklama: b == 0 bölenin sıfır olup olmadığını kontrol eder.
3 İşlem ve sonuç
| Kavram | Anlamı |
|---|---|
carp(3, 4) |
12 |
bol(9, 2) |
4.5, nil |
bol(1, 0) |
0, hata |
5.0 / 0.0 |
+Inf |