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.