Sizin gibi okuyucular MUO'yu desteklemeye yardımcı oluyor. Sitemizdeki bağlantıları kullanarak bir satın alma işlemi gerçekleştirdiğinizde, bir ortaklık komisyonu kazanabiliriz. Devamını oku.

Sayıları doğru şekilde biçimlendirmek zor bir iş olabilir. Ve para birimlerini biçimlendirmek, yerelleştirmeyi içeren ek zorluklar getirir. Neyse ki Go'nun yardımcı olacak özellikleri var.

Go standart kitaplığı, sayıları biçimlendirmek için çeşitli araçlar sağlar. strconv paketi, sayıları dizelere ve dizelerden ayrıştırmak ve dönüştürmek için işlevler içerir.

strconv Paketi

bu strconv package, sayılar ve dizeler arasında dönüştürme yapmak için güçlü bir araçtır. Çeşitli formatlardaki sayılarla çalışmak için kullanabilirsiniz.

strconv standart kitaplığın bir parçasıdır, bu nedenle birçok aşina olmanız gereken temel Go kavramları. Bunu nasıl içe aktarabileceğiniz aşağıda açıklanmıştır:

içe aktarmak"strconv"

Paket, sayıları çeşitli biçimlerdeki dizelere ve dizelerden dönüştürmek için işlevler sağlar. Tamsayılar ve kayan noktalı sayılarla çalışmak için işlevler içerir.

instagram viewer

strconv ayrıca ikili, sekizli ve onaltılık biçimlere ve bilimsel gösterime dönüştürme işlemlerini de gerçekleştirebilir.

Go'da Tam Sayıları Biçimlendirme

strconv paketinin İtoa işlevi, tamsayıları dizelere dönüştürmek için işlevsellik sağlar. bu İtoa işlev bir tamsayı alır ve bu tamsayının dize gösterimini döndürür.

içe aktarmak (
"fmt"
"strconv"
)

işlevana() {
tam sayılar := 3043
stringVersion := strconv. İtoa (tamsayılar)
fmt. Println (stringVersion) // Çıktı: "3043"
}

Bu kod, bir tamsayı değerini kullanarak bir dizgeye dönüştürür. İtoa. Daha sonra elde edilen dizgeyi kullanarak konsola çıktı verir. fmt paket.

Buna ek olarak İtoa işlev, strconv şunları sağlar:

  • FormatInt tamsayıları belirli bir tabana sahip dizeler olarak biçimlendirmek için
  • AppendInt dize biçimindeki tamsayıları bir bayt dilimine eklemek için.

Şu şekilde kullanabilirsiniz: FormatInt bir tamsayı biçimlendirme işlevi:

içe aktarmak (
"fmt"
"strconv"
)

işlevana() {
tam sayılar := 12345
dizeler := strconv. FormatInt(int64(tam sayılar), 10)
fmt. Println (dizeler) // Çıktı: "12345"
}

Bu kod kullanır int64() orijinal değeri 64 bitlik bir tamsayıya dönüştürmek için. Daha sonra sonucu iletir FormatInt, dönüştürme için bir tabanla birlikte, bu durumda 10. FormatInt bir dize döndürür Yazdır sonra konsola çıktı verir.

bu AppendInt işlev bir bayt dilimi alır, bir int64 değer ve bir taban.

içe aktarmak (
"fmt"
"strconv"
)

işlevana() {
tam sayılar := 12345
byteSlice := yapmak([]bayt, 0, 20)
byteSlice = strconv. AppendInt (byteSlice, int64(tam sayılar), 10)
fmt. Yazdır(sicim(byteSlice)) // Çıktı: "12345"
}

AppendInt'in eklenecek bir bayt dilimi aldığını ve elde edilen bayt dilimini döndürdüğünü unutmayın. Bu durumda, ilk bayt dilimi boştur, ancak tamsayının sonuçtaki dize gösterimini depolamak için 20'lik bir kapasiteye sahiptir.

Dizeleri Tam Sayı Olarak Ayrıştırma

bu Atoiler işlev, dizeleri tam sayılara dönüştürür. Girdi olarak bir dizgi alır ve bir hata türüyle birlikte o dizgenin tamsayı gösterimini döndürür.

Şu şekilde kullanabilirsiniz: Atoiler dizeden tamsayıya dönüştürme işlevi:

içe aktarmak (
"fmt"
"strconv"
)

işlevana() {
diziler := "123"
tamsayılar, hata := strconv. Atoiler (dizeler)

eğer hata!= sıfır {
fmt. Println (hata)
}

fmt. Println (tamsayılar)
}

Program tamsayı değerini konsola verir:

Şunu da kullanabilirsiniz: Ayrıştır işaretsiz tamsayıların dize gösterimini ayrıştırmak için işlev.

paket ana

içe aktarmak (
"fmt"
"strconv"
)

işlevana() {
// dizeyi 10 tabanlı ve 0 bitlik işaretsiz tamsayı olarak ayrıştır
val, err := strconv. Ayrıştır("12345", 10, 0)

eğer hata!= sıfır {
fmt. Println (hata)
} başka {
fmt. Yazdır (değer) // Çıktı: 12345
}
}

bu Ayrıştır işlev, 12345 dizesini on tabanlı, işaretsiz bir tamsayı olarak ayrıştırır. 0 bit boyutu, standart bir int türü döndürmesini sağlar. Ayrıştırılmış değeri ve bir hatayı döndürür.

kullanabilirsiniz ParseFloat bir kayan noktalı sayının dize gösterimini ayrıştırma işlevi.

içe aktarmak (
"fmt"
"strconv"
)

işlevana() {
// dizeyi 64 bitlik kayan noktalı sayı olarak ayrıştır
val, err := strconv. AyrıştırFloat("3.14", 64)

eğer hata!= sıfır {
fmt. Println (hata)
} başka {
fmt. Yazdır (değer) // Çıktı: 3.14
}
}

bu ParseFloat işlev, dizeyi 64 bitlik bir kayan noktalı sayı olarak ayrıştırır ve dizeyi ve bir hata türü döndürür.

Go'da Para Birimlerini Biçimlendirme

Para birimleriyle etkileşime giren bir uygulama oluşturmak, sayı biçimlendirme ve ayrıştırma gerektirir. Farklı para birimleriyle çalışmak zor olabilir, ancak strconv Ve muhasebe paketler onları biçimlendirmenize yardımcı olabilir.

Bir para birimi dizesini, para birimi üzerindeki işlemler için bir değişkene şu şekilde ayrıştırabilirsiniz:

içe aktarmak (
"fmt"
"strconv"
)

işlevana() {
// Ayrıştırılacak para birimi dizesi
paraStr := "$1,234.56"

// Para birimi sembolünü kaldırın ve bir değişkene dönüştürün
floatVal, hata := strconv. ParseFloat (currencyStr[1:], 64)

eğer hata!= sıfır {
fmt. Println (hata)
geri dönmek
}

// Ayrıştırılan kayan değeri yazdır
fmt. Println (floatVal) // Çıktı: 1234.56
}

bu para birimiStr değişken, sembol olarak dolar işareti olan bir para birimi değerinin dize gösterimidir. Programın kullandığı ParseFloat ikinci öğeden başlayarak (para birimi simgesinden sonra) para birimi dizesini ayrıştırma işlevi.

Geleneksel olarak, üretimde yanlış hesaplamalara ve hatalara neden olabileceğinden, para birimleri için dalgalanma kullanmaktan kaçınmak en iyisidir.

Alternatif olarak, aşağıdaki gibi bir üçüncü taraf paketi kullanabilirsiniz: muhasebe para birimlerini biçimlendirme ve ayrıştırma işlevine sahip olan.

Muhasebe paketini kurmak için proje dizininizde bu terminal komutunu çalıştırın:

github.com/leekchan/accounting adresini edinin

örneğini oluşturarak başlayın. Muhasebe yapı Yapıların bunlardan biri olduğunu hatırlayın Go'nun temel nesne yönelimli özellikleri, diğer dillerdeki sınıflara benzer. Diğer seçeneklerin yanı sıra bir Accounting örneğini bir para birimi simgesi ve kesinlik değeri ile başlatabilirsiniz.

kullanabilirsiniz FormatPara muhasebe paketinin sayıları para birimlerine biçimlendirme işlevi.

paket ana

içe aktarmak (
"fmt"
"matematik/büyük"

"github.com/leekchan/accounting"
)

işlevana() {
ac := muhasebe. Muhasebe{Sembol: "$", Kesinlik: 2}
fmt. Baskı (ac. FormatPara(123456789.213123))
fmt. Baskı (ac. FormatPara(12345678))
fmt. Baskı (ac. FormatMoney (büyük. Yeni Sıçan(77777777, 3)))
fmt. Baskı (ac. FormatMoney (büyük. Yeni Sıçan(-77777777, 3)))
fmt. Baskı (ac. FormatMoneyBigFloat (büyük. Yeni Şamandıra(123456789.213123)))
}

bu AC değişken muhasebe örneğidir. Bu program, parasal değerleri biçimlendirir ve yazdırır. FormatPara Ve FormatMoneyBigFloat muhasebe örneğinin yöntemleri. bu Yeni Sıçan işlevi büyük paket pay ve payda verilen bir rasyonel sayı oluşturur. bu Yeni Şamandıra işlevi, büyük kayan noktalı sayıları temsil etmeye yardımcı olur.

Go, Diğer Türleri de Biçimlendirmenize Yardımcı Olabilir

Go, sayıları ve para birimlerini basit bir şekilde dönüştürmek için birçok işlev sunar.

Dil ayrıca güçlü bir dize biçimlendirme sistemi sunar. fmt paketinin C'den ilham alan Sprintf işlevi, özel bir yer tutucu sözdizimi kullanarak biçimlendirilmiş dizeler oluşturmanıza olanak tanır. Sayılar ve para birimi değerleri içeren dizeler oluşturmak için Sprintf'i kullanabilirsiniz, bu da insan tarafından okunabilir çıktılar oluşturmayı kolaylaştırır.