Dok pišete Go kod, naći ćete da je oblikovanje niza vrlo korisno u mnogim situacijama. Možda analizirate ulaze ili izrađujete složeniji izlaz od jednostavnog ulančavanja. Možda radite s tipovima koji nisu obični nizovi.

Formatiranje nizova u Gou koristi poznati proces i sintaksu funkcije printf, koju jezici od Jave do Haskella također koriste.

Go nudi različite metode za oblikovanje nizova u fmt paket. Možete koristiti funkcije i glagole za oblikovanje niza ovisno o operaciji ili unosima koje želite formatirati.

Oblikovanje niza u Go

Funkcije u fmt paketu slične su analognim, kao što su funkcija printf u bashu ili C. Go izvodi svoje glagole za oblikovanje iz C.

Ti koristiš glagoli za oblikovanje niza kao rezervirana mjesta za vaše vrijednosti varijable u nizu koji sadrži. Tada možete proslijediti taj niz za oblikovanje funkciji poput Printf, zajedno s vrijednostima koje odgovaraju tim rezerviranim mjestima.

Ne možete koristiti glagole za oblikovanje niza s Ispis i Println metode. Možete ih koristiti metodama poput Printf i Sprintf.

instagram viewer
fmt. Println("Ovo je test %v", 90)
fmt. Printf("Ovo je test %v", 90)

The %v glagol ispisuje bilo koju vrijednost u zadanom formatu. The Println metoda ne prepoznaje glagole i ispisuje sve argumente koje primi. The Printf i Sprintf obje funkcije formatiraju prvi argument niza koji im proslijedite.

Funkcije oblikovanja niza u fmt paketu

Oblikovanje nizova u programski jezik Go zahtijeva da koristite funkciju oblikovanja niza i glagol. Funkcija vraća formatirani niz, a glagoli su rezervirana mjesta za unose niza.

The Printf metoda formatira ulaz prema specifikatoru formata i vraća broj zapisanih bajtova ili pogrešaka.

fmt. Printf("Ovo je test %v", 90)

Uobičajeno, nećete morati brinuti o pogreškama kada koristite Printf metoda.

The Sprintf metoda formatira prema navedenom formatu i vraća rezultat kao niz.

var rezultat = fmt. Sprintf("Ovo je test %v", 90)

The Fprintf metoda formatira niz i zapisuje ga zapisivaču (metode koje implementiraju io. Pisac sučelje)

// zapis podataka na standardni izlaz
rezultat, pogreška = fmt. Fprintf (autor, "Ovo je test %v", 90)

The Fscanf metoda skenira iz čitača i formatira prema navedenom formatu.

var uzeti niz

// čita podatke iz zadanog niza
readString := nizovi. NewReader("Ovo je test")

čitati, griješiti := fmt. Fscanf (čitač, "%v", &uzmi)

U ovom slučaju, Fscanf dekodira niz iz čitača u uzeti varijabla, i čitati varijabla sadrži rezultat formata.

Glagoli za oblikovanje niza

Go nudi mnogo glagola za oblikovanje koje možete koristiti zajedno s funkcijama za oblikovanje niza.

Postoje opći glagoli za oblikovanje niza poput %v glagol u funkciji oblikovanja niza primjeri. Možete koristiti opće glagole za oblikovanje niza za formatiranje bilo koje vrste podataka.

Možete koristiti %#v glagol za izlaz bilo koje vrijednosti, the %+v za strukture, %T glagol za vrstu bilo koje vrijednosti, i %% glagol za nikakve vrijednosti.

tip bilo koji strukturirati { 
Ime niz
dob int
je prijavljen bool
}

var instanca = bilo koji {
ime: "John Doe",
dob: 34,
je prijavljen: pravi,
}

var rezultat = fmt. Sprintf("Ovo je strukturirati primjer oblikovanja %+v", primjer)
fmt. Println (rezultat)

The proizlaziti varijabla sadrži formatirani niz instancirane strukture. Ako ga ispišete, trebao bi izgledati otprilike ovako:

Ovo je primjer oblikovanja strukture {name: John Doe age: 34 isLoggedIn:pravi}

Postoje glagoli za oblikovanje specifičnih Go nativnih tipova podataka, uključujući kanale i pokazivače.

Glagol Funkcionalnost
%t Booleovi.
%d int, int8, itd.
%d, %#x ako se ispisuje s %#v uint, uint8, itd.
%g float32, complex64, itd.
%s niz.
%p chan.
%P pokazivač.

Htjet ćete biti sigurni da ne griješite s glagolima budući da razlikuju velika i mala slova, poput chan i pokazivač glagoli.

Formatiranje cijelih brojeva i brojeva s pomičnim brojem

Postoje glagoli za oblikovanje niza za oblikovanje cijelih brojeva različite baze. Možete koristiti bilo koji od ovih glagola za formatiranje cijelih brojeva

Glagol Funkcionalnost
%b baza 2
%c znak predstavljen odgovarajućom Unicode kodnom točkom.
%d baza 10.
%o baza 8.
%O osnova 8 s prefiksom 0o.
%q znakovni literal s jednostrukim navodnicima sigurno je izbjegnut s Go sintaksom.
%x osnova 16, s malim slovima za a-f.
%X baza 16, s velikim slovima za A-F.
%U Unicode format: U+1234; isto kao "U+%04X".

Na primjer, možete oblikovati cijeli broj pomoću %d glagol:

var rezultat = fmt. Sprintf("Ovo je primjer formatiranja cijelog broja %d", 90)
fmt. Println (rezultat)

Ovo su glagoli za formatiranje brojeva s pomičnim zarezom.

Glagol Funkcionalnost
%b bezdecimalni znanstveni zapis s eksponentom potencije dvojke, na način strconv. FormatFloat s formatom 'b', npr. -123456p-78
%e znanstvena notacija, npr. -1,234456e+78
%E decimalna točka, ali bez eksponenta, npr. 123,456
%f decimalna točka, ali bez eksponenta, npr. 123,456
%F sinonim za %f.
%g %e za velike eksponente, %f inače. Preciznost ispod.
%G %E za velike eksponente, %F inače
%x heksadecimalni zapis (s decimalnom potencijom dvaju eksponenata), npr. -0x1.23abcp+20.
%X heksadecimalni zapis velikim slovima, npr. -0X1.23ABCP+20.

Evo primjera oblikovanja decimalne točke bez eksponenta s %f glagol.

var rezultat = fmt. Sprintf("Ovo je primjer oblikovanja s pomičnim zarezom %f", 432.9503)
fmt. Println (rezultat)

Uvijek možete koristiti opće glagole ako niste sigurni u vrstu.

Formatiranje nizova i bajtova

Tipovi nizova i isječaka bajtova prilično su slični u Gou. Ovo su oznake za formatiranje nizova i bajtova.

Glagol Funkcionalnost
%s neprotumačeni bajtovi niza ili isječka
%q niz s dvostrukim navodnicima sigurno izbjegnut s Go sintaksom
%x baza 16, mala slova, dva znaka po bajtu
%X baza 16, velika slova, dva znaka po bajtu

Evo primjera oblikovanja niza s %s glagol.

var rezultat = "primjer"
var rezultat = fmt. Sprintf("Ovo je niz primjer oblikovanja %s", rezultat)
fmt. Println (rezultat)

Paket fmt je neophodan za Python programiranje

The fmt paket sadrži većinu funkcionalnosti koje će vam trebati za oblikovanje niza. Go također nudi a žice paket za manipulaciju nizovima i a log paket koji može formatirati nizove za zapisivanje.

The fmt paket ima funkcije koje implementiraju io. Pisac i io. Čitač sučelja. Bit će vam korisno za mnoge slučajeve upotrebe kao što je izrada web aplikacija i aplikacija naredbenog retka.