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.
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.