Go Programming

Go’da Verimli Tam Sayıdan Metne Dönüşüm

Spread the love

Go, tam sayıları dize gösterimlerine dönüştürmek için çeşitli verimli yöntemler sunar. Bu, sayıları görüntülerken, verileri günlüğe kaydederken veya çeşitli amaçlar için dizeler oluştururken yaygın bir işlemdir. Bu makale, üç temel yaklaşımı ele almaktadır: strconv.Itoa fonksiyonu, strconv.FormatInt fonksiyonu ve fmt.Sprint metodu.

İçerik Tablosu

strconv.Itoa Fonksiyonu

İmzalı tam sayıları (int) dizelere dönüştürmek için strconv.Itoa en basit ve en verimli çözümü sağlar. Doğrudan bir tam sayı alır ve dize karşılığını döndürür. Son derece güvenilir olsa da, potansiyel (ancak nadir) bir hata paniğe neden olacaktır.


package main

import (
	"fmt"
	"strconv"
)

func main() {
	num := 12345
	str := strconv.Itoa(num)
	fmt.Println(str) // Çıktı: 12345

	negativeNum := -9876
	negativeStr := strconv.Itoa(negativeNum)
	fmt.Println(negativeStr) // Çıktı: -9876
}

Kısalığı ve hızı, basit imzalı tam sayı dönüşümleri için idealdir.

strconv.FormatInt Fonksiyonu

strconv.FormatInt, çeşitli tam sayı boyutlarını (int64, int32, vb.) destekleyerek ve çıktı dizesi için tabanı (radix) belirtmenize izin vererek daha fazla esneklik sunar. Bu özellik, özellikle sayıları ikili, sekizli veya onaltılık formatlarda temsil etmek için kullanışlıdır.


package main

import (
	"fmt"
	"strconv"
)

func main() {
	num := int64(12345)
	str := strconv.FormatInt(num, 10) // 10 Taban (ondalık)
	fmt.Println(str) // Çıktı: 12345

	hexStr := strconv.FormatInt(num, 16) // 16 Taban (onaltılık)
	fmt.Println(hexStr) // Çıktı: 3039

	binStr := strconv.FormatInt(num, 2) // 2 Taban (ikili)
	fmt.Println(binStr) // Çıktı: 11000000111001

    unsignedNum := uint64(12345)
    unsignedStr := strconv.FormatUint(unsignedNum, 10)
    fmt.Println(unsignedStr) //Çıktı: 12345
}

İkinci argüman tabanı belirler (ondalık için 10, onaltılık için 16, ikili için 2, sekizlik için 8). İmzasız tam sayılar için strconv.FormatUint kullanın.

fmt.Sprint Metodu

fmt.Sprint fonksiyonu, tam sayılar da dahil olmak üzere çeşitli veri türlerini dizelere dönüştürmek için genel amaçlı bir çözüm sunar. Basit tam sayı dönüşümleri için strconv.Itoa‘dan daha az verimli olsa da, çoklu değerleri eş zamanlı olarak biçimlendirirken çok yönlülüğü öne çıkar.


package main

import (
	"fmt"
)

func main() {
	num := 12345
	str := fmt.Sprint(num)
	fmt.Println(str) // Çıktı: 12345

	str2 := fmt.Sprintf("Sayı şu: %d", num) //Biçimlendirme üzerinde daha fazla kontrol
	fmt.Println(str2) // Çıktı: Sayı şu: 12345

    multipleValues := fmt.Sprint("Değer1: ", 10, ", Değer2: ", 20)
    fmt.Println(multipleValues) // Çıktı: Değer1: 10, Değer2: 20
}

fmt.Sprint, özellikle tam sayıları daha büyük dizelerin içine yerleştirmek için kullanışlıdır. fmt.Sprintf, biçimlendirme belirleyicilerini (ondalık tam sayılar için %d gibi) kullanarak biçimlendirme üzerinde daha ince bir kontrol sağlar.

Özetle, strconv.Itoa basit imzalı tam sayı dönüşümleri için en iyisidir; strconv.FormatInt (ve strconv.FormatUint) taban kontrolü sağlar ve çeşitli tam sayı boyutlarını işler; ve fmt.Sprint ve fmt.Sprintf daha fazla esneklik sunar ancak temel tam sayıdan dizeye dönüşümler için daha az verimli olabilir. İhtiyaçlarınıza ve kodlama tarzınıza en uygun yöntemi seçin.

Bir yanıt yazın

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