Go kodunu yazarken, pek çok durumda dize biçimlendirmenin çok yararlı olduğunu göreceksiniz. Girdileri ayrıştırıyor veya basit birleştirmeden daha karmaşık çıktılar hazırlıyor olabilirsiniz. Düz dizeler dışındaki türlerle çalışıyor olabilirsiniz.
Go’daki dize biçimlendirme, Java’dan Haskell’e dillerin de kullandığı printf işlevinin bilinen sürecini ve sözdizimini kullanır.
Go, fmt paketinde dizeleri biçimlendirmek için çeşitli yöntemler sağlar . Biçimlendirmek istediğiniz işleme veya girdilere bağlı olarak dize biçimlendirmesi için işlevleri ve fiilleri kullanabilirsiniz.
Go’da Dize Biçimlendirme
fmt paketindeki işlevler, bash veya C’deki printf işlevi gibi karşılıklarına benzer . Go, biçimlendirme fiillerini C’den alır.
Dize biçimlendirme fiillerini , içeren bir dizedeki değişken değerleriniz için yer tutucular olarak kullanırsınız . Daha sonra bu biçimlendirme dizesini , bu yer tutuculara karşılık gelen değerlerle birlikte Printf gibi bir işleve iletebilirsiniz.
Dize biçimlendirme fiillerini Print ve Println yöntemleriyle kullanamazsınız. Bunları Printf ve Sprintf gibi yöntemlerle kullanabilirsiniz .
fmt.Println(“This is a test %v”, 90)nfmt.Printf(“This is a test %v”, 90)n
%v fiili , herhangi bir değeri varsayılan biçiminde yazdırır. Println yöntemi fiilleri tanımaz ve aldığı bağımsız değişkenleri yazdırır. Printf ve Sprintf işlevlerinin her ikisi de, onlara ilettiğiniz ilk dize bağımsız değişkenini biçimlendirir.
tamsayıları biçimlendirmenin sonucu
fmt Paketinde Dizgi Biçimlendirme İşlevleri
Go programlama dilinde dizeleri biçimlendirmek, bir dizi biçimlendirme işlevi ve bir fiil kullanmanızı gerektirir. İşlev, biçimlendirilmiş dizeyi döndürür ve fiiller, dizeye girişler için yer tutuculardır.
Printf yöntemi, girişi biçim belirticiye göre biçimlendirir ve yazılan bayt veya hata sayısını döndürür .
fmt.Printf(“This is a test %v”, 90)n
Geleneksel olarak, Printf yöntemini kullandığınızda hatalar konusunda endişelenmeniz gerekmez .
Sprintf yöntemi, belirtilen biçime göre biçimlendirir ve sonucu bir dize olarak döndürür.
var result = fmt.Sprintf(“This is a test %v”, 90)n
Fprintf yöntemi, dizeyi biçimlendirir ve onu bir yazara yazar ( io.Writer arabirimini uygulayan yöntemler)
// write data to standard outputnresult, err = fmt.Fprintf(writer, “This is a test %v”, 90)
Fscanf yöntemi, bir okuyucudan tarar ve belirtilen formata göre formatlar.
var take stringn n// read data from the given stringnreadString := strings.NewReader(“This is a test”)n nread, err := fmt.Fscanf(reader, “%v”, &take)n
Bu durumda, Fscanf okuyucudan gelen dizenin kodunu çözerek alma değişkenine dönüştürür ve okuma değişkeni biçimin sonucunu tutar.
Dize Biçimlendirme Fiilleri
Go, dize biçimlendirme işlevleriyle birlikte kullanabileceğiniz birçok biçimlendirme fiili sağlar.
Dize biçimlendirme işlevleri örneklerinde %v fiili gibi genel dize biçimlendirme fiilleri vardır . Herhangi bir veri türünü biçimlendirmek için genel dize biçimlendirme fiillerini kullanabilirsiniz.
Herhangi bir değerin çıktısını almak için %#v fiilini , yapılar için %+v’yi , herhangi bir değer türü için %T fiilini ve hiçbir değer için %% fiilini kullanabilirsiniz.
type any struct { n name stringn age intn isLoggedIn booln}n nvar instance = any {n name: “John Doe”,n age: 34,n isLoggedIn: true,n}n nvar result = fmt.Sprintf(“This is a struct formatting example %+v”, instance)nfmt.Println(result)n
Sonuç değişkeni, somutlaştırılmış yapının biçimlendirilmiş dizesini tutar. Yazdırırsanız, şöyle görünmelidir:
This is a struct formatting example {name:John Doe age:34 isLoggedIn:true}
Kanallar ve işaretçiler dahil olmak üzere belirli Go yerel veri türlerini biçimlendirmek için fiiller vardır.
Fiil işlevsellik
%t booleler.
%d int, int8 vb.
%d, %#x, %#v ile yazdırılırsa uint, uint8, vb.
%g float32, karmaşık64, vb.
%s sicim.
%p chan.
%P Işaretçi.
Chan ve işaretçi fiiller gibi büyük/küçük harfe duyarlı oldukları için fiillerle hata yapmadığınızdan emin olmak isteyeceksiniz .
Tamsayıları ve Kayan Sayıları Biçimlendirme
Tamsayıları farklı tabanlarda biçimlendirmek için dize biçimlendirme fiilleri vardır . Tamsayıları biçimlendirmek için bu fiillerden herhangi birini kullanabilirsiniz.
Fiil işlevsellik
%b taban 2
%c karşılık gelen Unicode kod noktası tarafından temsil edilen karakter.
%d taban 10.
%Ö taban 8.
%Ö 0o öneki ile taban 8.
%q tek tırnaklı bir karakter hazır bilgisi, Go sözdizimi ile güvenli bir şekilde kaçtı.
%x af için küçük harflerle taban 16.
%X AF için büyük harflerle taban 16.
%U Unicode biçimi: U+1234; “U+%04X” ile aynı.
Örneğin, %d fiilini kullanarak bir tamsayıyı biçimlendirebilirsiniz:
var result = fmt.Sprintf(“This is an integer formatting example %d”, 90)nfmt.Println(result)
Bunlar, kayan noktalı sayıları biçimlendirmek için kullanılan fiillerdir.
Fiil işlevsellik
%b strconv tarzında, üssü iki olan ondalıksız bilimsel gösterim. ‘b’ biçimiyle FormatFloat, örneğin -123456p-78
% e bilimsel gösterim, örneğin -1.234456e+78
%E ondalık nokta ancak üs yok, örneğin 123.456
%f ondalık nokta ancak üs yok, örneğin 123.456
%F %f’in eşanlamlısı.
%g Büyük üsler için %e, aksi takdirde %f. Hassasiyet aşağıda.
%G Büyük üsler için %E, aksi takdirde %F
%x onaltılık gösterim (iki üssün ondalık üssü ile), örneğin -0x1.23abcp+20.
%X büyük harfli onaltılık gösterim, örneğin -0X1.23ABCP+20.
Burada, %f fiiliyle üssüz bir ondalık basamağı biçimlendirmenin bir örneği verilmiştir .
var result = fmt.Sprintf(“This is a floating point formatting example %f”, 432.9503)nfmt.Println(result)n
Türden emin değilseniz her zaman genel fiilleri kullanabilirsiniz.
Dizeleri ve Baytları Biçimlendirme
Dizeler ve bayt türleri, Go’da oldukça benzerdir. Bunlar, dizeleri ve baytları biçimlendirmek için bayraklardır.
Fiil işlevsellik
%s dizenin veya dilimin yorumlanmamış baytları
%q çift tırnaklı bir dize, Go sözdizimi ile güvenli bir şekilde kaçtı
%x 16 tabanı, küçük harf, bayt başına iki karakter
%X 16 tabanı, büyük harf, bayt başına iki karakter
%s fiiliyle bir dizgeyi biçimlendirmenin bir örneğini burada bulabilirsiniz.
var score = “example”nvar result = fmt.Sprintf(“This is a string formatting example %s”, score)nfmt.Println(result)
fmt Paketi Python Programlaması İçin Gereklidir
fmt paketi , dize biçimlendirme için ihtiyaç duyacağınız işlevlerin çoğunu içerir. Go ayrıca, dize manipülasyonu için bir dize paketi ve günlüğe kaydetme için dizeleri biçimlendirebilen bir günlük paketi sağlar.
fmt paketi, io.Writer ve io.Reader arabirimlerini uygulayan işlevlere sahiptir . Web ve komut satırı uygulamaları oluşturmak gibi birçok kullanım durumu için yararlı bulacaksınız.