Kako formatirati nizove u Gou

Kako formatirati nizove u Gou

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.





kako smanjiti veličinu datoteke jpg

Oblikovanje niza 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 svoje glagole za oblikovanje izvodi 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 .

fmt.Println("This is a test %v", 90) 
fmt.Printf("This is a test %v", 90)

The %u 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.





  rezultat oblikovanja cijelih brojeva

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("This is a 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 result = fmt.Sprintf("This is a test %v", 90) 

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

// write data to standard output 
result, err = fmt.Fprintf(writer, "This is a test %v", 90)

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

var take string 

// read data from the given string
readString := strings.NewReader("This is a test")

read, err := fmt.Fscanf(reader, "%v", &take)

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 %u glagol u funkciji oblikovanja niza primjeri. Možete koristiti opće glagole za oblikovanje niza za formatiranje bilo koje vrste podataka.

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

type any struct {  
name string
age int
isLoggedIn bool
}

var instance = any {
name: "John Doe",
age: 34,
isLoggedIn: true,
}

var result = fmt.Sprintf("This is a struct formatting example %+v", instance)
fmt.Println(result)

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

This is a struct formatting example {name:John Doe age:34 isLoggedIn:true}

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

%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

%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 formatirati cijeli broj pomoću %d glagol:

kako urediti video zapise na iPhoneu
var result = fmt.Sprintf("This is an integer formatting example %d", 90) 
fmt.Println(result)

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

%b bezdecimalni znanstveni zapis s eksponentom potencije dvojke, na način strconv. FormatFloat s formatom 'b', npr. -123456p-78
%i znanstvena notacija, npr. -1,234456e+78
%I 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 result = fmt.Sprintf("This is a floating point formatting example %f", 432.9503) 
fmt.Println(result)

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.

%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 score = "example" 
var result = fmt.Sprintf("This is a string formatting example %s", score)
fmt.Println(result)

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.Čitatelj sučelja. Bit će vam korisno za mnoge slučajeve upotrebe kao što je izrada web aplikacija i aplikacija naredbenog retka.