Hata Döndüren Fonksiyonlar
Coddy'nin GO Journey'sinin Temeller bölümünün bir parçası — ders 104 / 109.
Go'da, fonksiyonlar genellikle bir şeylerin ters gidip gitmediğini belirtmek için son dönüş değeri olarak bir error döndürür.
Hem bir sonuç hem de bir hata döndüren bir fonksiyon oluşturun:
func divide(a, b float64) (float64, error) {
if b == 0 {
return 0, errors.New("cannot divide by zero")
}
return a / b, nil
}Fonksiyonu çağırın ve hatayı ele alın:
func main() {
result, err := divide(10, 0)
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("Result:", result)
}
}Çıktı şu şekilde olacaktır:
Error: cannot divide by zeroGörev
BaşlangıçBu meydan okumada, geçersiz girdi sağlandığında hata döndüren bir fonksiyon oluşturma pratiği yapacaksınız.
Bir kullanıcı adının geçerli olup olmadığını kontrol eden validateUsername fonksiyonunu tamamlamanız gerekiyor. Bir kullanıcı adı, en az 3 karakter uzunluğundaysa geçerlidir. Kullanıcı adı geçerliyse, hata için nil döndürün. Geçersizse, uygun bir mesajla birlikte bir hata döndürün.
Fonksiyonunuzu çağıran ve hatayı işleyen kod sizin için zaten yazıldı.
Not: Bu meydan okuma, kullanıcı girdisi yerine önceden tanımlanmış değişkenleri kullanır.
Kopya kağıdı
Go'daki fonksiyonlar, bir şeylerin ters gidip gitmediğini belirtmek için genellikle son dönüş değeri olarak bir error döndürürler.
Hem bir sonuç hem de bir hata döndüren bir fonksiyon oluşturun:
func divide(a, b float64) (float64, error) {
if b == 0 {
return 0, errors.New("cannot divide by zero")
}
return a / b, nil
}Fonksiyonu çağırırken hatayı ele alın:
result, err := divide(10, 0)
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("Result:", result)
}Hata olmadığında nil döndürün ve hata mesajları oluşturmak için errors.New() kullanın.
Kendin dene
package main
import (
"errors"
"fmt"
)
func validateUsername(username string) error {
// TODO: Kullanıcı adı uzunluğunun 3 karakterden az olup olmadığını kontrol edin
// Eğer öyleyse, "username too short" mesajıyla bir hata döndürün
// Aksi takdirde, nil döndürün (hata yok)
return nil
}
func main() {
// Geçerli bir kullanıcı adı ile test edin
validName := "bob123"
err1 := validateUsername(validName)
if err1 != nil {
fmt.Printf("%s is invalid: %v\n", validName, err1)
} else {
fmt.Printf("%s is valid!\n", validName)
}
// Geçersiz bir kullanıcı adı ile test edin
invalidName := "ab"
err2 := validateUsername(invalidName)
if err2 != nil {
fmt.Printf("%s is invalid: %v\n", invalidName, err2)
} else {
fmt.Printf("%s is valid!\n", invalidName)
}
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Temeller bölümündeki tüm dersler
4Karşılaştırma ve Mantıksal Operatörler
Karşılaştırma Operatörleri - Bölüm 1Karşılaştırma Operatörleri - Bölüm 2Mantıksal VE OperatörüMantıksal VEYA OperatörüMantıksal DEĞİL OperatörüOperatör Önceliği TemelleriÖzet - Karşılaştırma Yapma7Kontrol Akışı: Döngüler
`for` Döngüsü Nedir?`for` Döngüsü - Temel`for` Döngüsü - Sadece Koşul`break` Anahtar Kelimesi`continue` Anahtar Kelimesiİç İçe DöngülerÖzet - İşlemleri Tekrarlama2Değişkenler ve Temel Veri Tipleri
Değişken nedir?`:=` ile Tür ÇıkarımıTam Sayılar (int)Ondalıklı SayılarBooleanlarStringlerSıfır DeğerlerSabitlerİsimlendirme KurallarıÖzet - Değişkenler ve Türler5Temel Giriş/Çıkış
Biçimlendirilmiş ÇıktıBiçim BelirteçleriVeri Tiplerini YazdırmaTemel Kullanıcı Girdisi AlmaÖzet - Giriş ve Çıkış8Fonksiyonlar
Fonksiyonları AnlamakFonksiyon TanımlamaFonksiyonları ÇağırmaFonksiyon ParametreleriTek Bir Değer DöndürmeBirden Fazla Değer Döndürmeİsimlendirilmiş Dönüş DeğerleriFonksiyon Kapsamı TemelleriÖzet - Yeniden Kullanılabilir Kod Oluşturma11Bileşik Tipler: Dilimler
Dilimlere GirişDilim Literallerini Tanımlama`make` ile Dilim OluşturmaDilim Uzunluğu vs KapasiteDilim Elemanlarına ErişimEleman EklemeMevcut Dilimleri/Dizileri DilimlemeDilimler Üzerinde YinelemeDilimleri KopyalamaÖzet - Dinamik Listeler14Temel Hata Yönetimi
Hata Kavramı`error` ArayüzüHata Döndüren FonksiyonlarHataları Kontrol EtmeBasit Hatalar OluşturmaFormatlanmış Hatalar OluşturmaTemel Hata YönetimiÖzet - Problemleri Ele Alma3Temel Operatörler
Aritmetik OperatörlerBölme OperatörüModulo OperatörüAtama OperatörüBileşik Atama OperatörleriArtırma ve AzaltmaÖzet - Hesaplamalar6Kontrol Akışı: Koşullu İfadeler
`if` İfadesi`else` Anahtar Kelimesi`else if` Anahtar Kelimesi`if` İçinde Değişken GölgelemeDeğişkenleri Başlatma`switch` İfadesiİfadeli `switch`İfadesiz `switch``fallthrough` Anahtar KelimesiÖzet - Karar Verme