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