CodeBlanks Logo Icon CodeBlanks

strconv ile dönüşüm

strconv ile string-sayı dönüşümlerini öğrenirsin.

strconv ile dönüşüm

strconv paketi sayı ile metin arasında güvenli dönüşüm yapar:

n, err := strconv.Atoi("42")         // string → int
s := strconv.Itoa(42)                 // int → string
f, err := strconv.ParseFloat("3.14", 64)
b, err := strconv.ParseBool("true")
t := strconv.FormatFloat(3.14159, 'f', 2, 64)  // "3.14"

Metinden sayıya çeviren fonksiyonlar her zaman error döndürür; kullanıcı girdisi geçersiz olabilir.

Hata türü

Dönüşüm hatası *strconv.NumError türündedir ve neden başarısız olduğunu söyler:

_, err := strconv.Atoi("on iki")
fmt.Println(err)
// strconv.Atoi: parsing "on iki": invalid syntax

_, err = strconv.Atoi("99999999999999999999")
// ... value out of range

errors.Is(err, strconv.ErrSyntax) ve strconv.ErrRange ile nedeni kontrol edebilirsin.

Uygulama Girdileri topla

[]string{"10", " 20 ", "otuz", "5"} girdilerini gez; her birini strings.TrimSpace sonrası strconv.Atoi ile çevir, hatalıları atla ve geçerlileri topla. Toplamı ve atlanan sayısını tek satırda yazdır.

Başlangıç kodu

main.go
package main

import (
    "fmt"
    "strconv"
    "strings"
)

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
package main

import (
    "fmt"
    "strconv"
    "strings"
)

func main() {
    toplam, atlanan := 0, 0
    for _, s := range []string{"10", " 20 ", "otuz", "5"} {
        n, err := strconv.Atoi(strings.TrimSpace(s))
        if err != nil {
            atlanan++
            continue
        }
        toplam += n
    }
    fmt.Println(toplam, atlanan)
}

Beklenen çıktı

35 1

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 <code>strconv.Atoi(" 42")</code> (başında boşluk) ne döndürür?

  • 0 ve sözdizimi hatası Doğru cevap
  • 42 ve nil
  • panic
  • -42

Açıklama: Atoi boşluk kabul etmez; kullanıcı girdisini önce strings.TrimSpace ile temizlemek gerekir.

2 Sayıya çevir

Soru
n, err := strconv.____("17")
Cevap
n, err := strconv.Atoi("17")

Açıklama: Atoi (ASCII to integer) metni int'e çevirir.

3 Fonksiyon ve yön

Kavram Anlamı
strconv.Atoi string → int
strconv.Itoa int → string
strconv.ParseFloat string → float64
strconv.ParseBool string → bool

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