Go Programming

Go’da Verimli String’den Integer’a Dönüşüm

Spread the love

Go, çeşitli programlama senaryolarında sıkça karşılaşılan bir işlem olan, string’leri integer’lara dönüştürmek için birkaç verimli yöntem sunar. Bu makale, üç temel yaklaşımı inceleyerek, belirli ihtiyaçlarınız için en iyi yöntemi seçmenize yardımcı olmak amacıyla güçlü ve zayıf yönlerini vurgular.

İçindekiler

  1. strconv.Atoi()
  2. strconv.ParseInt()
  3. fmt.Sscanf()
  4. Yöntemlerin Karşılaştırılması

1. strconv.Atoi()

strconv.Atoi() fonksiyonu, 10 tabanlı bir string’i integer’a dönüştürmek için özlü bir yol sağlar. Basitliği, basit dönüşümler için idealdir.


package main

import (
	"fmt"
	"strconv"
)

func main() {
	str := "12345"
	num, err := strconv.Atoi(str)
	if err != nil {
		fmt.Println("Hata:", err)
	} else {
		fmt.Println("Integer:", num)
	}
}

Fonksiyon, dönüştürülen integer ve bir hata değerini döndürür. Giriş stringinin geçerli bir integer olmadığı durumları işlemek için her zaman hataları kontrol edin.

2. strconv.ParseInt()

Daha esnek integer dönüşümleri için strconv.ParseInt(), tabanı (radix) ve istenen integer boyutunu (örneğin, int32, int64) belirtmenize olanak tanır.


package main

import (
	"fmt"
	"strconv"
)

func main() {
	str := "1A"
	num, err := strconv.ParseInt(str, 16, 64) // 16 taban, 64-bit integer
	if err != nil {
		fmt.Println("Hata:", err)
	} else {
		fmt.Println("Integer:", num)
	}

	str2 := "101101"
	num2, err := strconv.ParseInt(str2, 2, 64) // 2 taban, 64-bit integer
	if err != nil {
		fmt.Println("Hata:", err)
	} else {
		fmt.Println("Integer:", num2)
	}
}

Bu örnek, onaltılık ve ikili string’lerin dönüştürülmesini göstermektedir. İkinci argüman tabanı, üçüncü argüman ise sonuç integer’ın bit boyutunu belirtir. Hata işleme çok önemlidir.

3. fmt.Sscanf()

fmt.Sscanf(), karmaşık string formatlarıyla uğraşırken kullanışlı olan, string ayrıştırmaya daha genel bir yaklaşım sunar. Bununla birlikte, basit integer dönüşümleri için, strconv fonksiyonlarından genellikle daha az verimlidir.


package main

import (
	"fmt"
)

func main() {
	str := "Değer: 12345"
	var num int
	_, err := fmt.Sscanf(str, "Değer: %d", &num)
	if err != nil {
		fmt.Println("Hata:", err)
	} else {
		fmt.Println("Integer:", num)
	}
}

“Değer: %d” format string’i, string’in nasıl ayrıştırılacağını belirtir. %d, num değişkeninde saklanacak bir integer’ı gösterir. Bu yöntem, yapılandırılmış verileri ayrıştırmak için güçlüdür, ancak basit integer dönüşümleri için karmaşıklık ekler.

4. Yöntemlerin Karşılaştırılması

Doğru yöntemi seçmek, belirli ihtiyaçlarınıza bağlıdır:

Yöntem Taban Desteği Bit Boyutu Kontrolü Hata İşleme Basitlik Kullanım Alanı
strconv.Atoi() Yalnızca 10 Taban Hayır Evet Yüksek Basit 10 tabanlı dönüşümler
strconv.ParseInt() Değişken Evet Evet Orta Esnek taban ve bit boyutu
fmt.Sscanf() Değişken Evet Evet Düşük Karmaşık string ayrıştırma

Temel 10 tabanlı dönüşümler için strconv.Atoi() en basit ve en verimli yöntemdir. strconv.ParseInt(), farklı tabanlar ve integer boyutları için daha fazla esneklik sağlar. fmt.Sscanf(), daha karmaşık string yapılarından integer’ları çıkarmak için en iyisidir.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir