strconv ile dönüşüm
- Go kursu
- Başlangıç
- Ders 59/90
- 4 dk
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 rangeerrors.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
package main
import (
"fmt"
"strconv"
"strings"
)
func main() {
// buraya yaz
}Örnek çözüm
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
n, err := strconv.____("17")
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 |