CodeBlanks Logo Icon CodeBlanks

Çarpma ve bölme

Ç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

main.go
package main

import (
    "errors"
    "fmt"
)

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
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ü

Soru
if b ____ 0 {
    return 0, errors.New("sıfıra bölünemez")
}
Cevap
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

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