Pe măsură ce scrieți codul Go, veți găsi formatarea șirurilor de caractere foarte utilă în multe situații. Este posibil să analizați intrări sau să creați o ieșire mai complexă decât o simplă concatenare. Este posibil să lucrați cu alte tipuri decât șiruri simple.
Formatarea șirurilor în Go utilizează procesul familiar și sintaxa funcției printf, pe care le folosesc și limbaje de la Java la Haskell.
Go oferă diverse metode de formatare a șirurilor în fișierul fmt pachet. Puteți utiliza funcții și verbe pentru formatarea șirurilor în funcție de operația sau intrările pe care doriți să le formatați.
Formatarea șirurilor în Go
Funcțiile din pachetul fmt sunt similare cu omologii, cum ar fi funcția printf în bash sau C. Go derivă verbele de formatare din C.
Să utilizați verbe cu formatare de șiruri ca substituenți pentru valorile dvs. variabile într-un șir care conține. Apoi puteți trece acel șir de formatare unei funcții precum Printf, împreună cu valorile corespunzătoare acelor substituenți.
Nu puteți folosi verbe cu formatare șir cu
Imprimare și Println metode. Le puteți folosi cu metode precum Printf și Sprintf.fmt. Println("Acesta este un test %v", 90)
fmt. Printf("Acesta este un test %v", 90)
The %v verbul afișează orice valoare în formatul implicit. The Println metoda nu recunoaște verbele și imprimă orice argumente pe care le primește. The Printf și Sprintf ambele funcții formatează primul argument șir pe care le transmiteți.
Funcții de formatare a șirurilor din pachetul fmt
Formatarea șirurilor în limbajul de programare Go necesită să utilizați o funcție de formatare a șirurilor și un verb. Funcția returnează șirul formatat, iar verbele sunt substituenții pentru intrările în șir.
The Printf metoda formatează intrarea în funcție de specificatorul de format și returnează numărul de octeți sau erori scrise.
fmt. Printf("Acesta este un test %v", 90)
În mod convențional, nu va trebui să vă faceți griji cu privire la erori atunci când utilizați Printf metodă.
The Sprintf metoda formatează conform formatului specificat și returnează rezultatul ca șir.
var rezultat = fmt. Sprintf("Acesta este un test %v", 90)
The Fprintf metoda formatează șirul și îl scrie unui writer (metode care implementează io. Scriitor interfata)
// scrie datele la ieșirea standard
rezultat, err = fmt. Fprintf (scriitor, „Acesta este un test %v”, 90)
The Fscanf metoda scanează dintr-un cititor și formatează conform formatului specificat.
var lua şir
// citește datele din șirul dat
readString := șiruri. NewReader(„Acesta este un test”)
citeste, greseste := fmt. Fscanf (cititor, „%v”, &take)
În acest caz, Fscanf decodifică șirul din cititor în lua variabilă, iar citit variabila deține rezultatul formatului.
Verbele de formatare a șirurilor
Go oferă multe verbe de formatare pe care le puteți folosi împreună cu funcțiile de formatare a șirurilor.
Există verbe cu formatare generală a șirurilor, cum ar fi %v verb în exemplele de funcții de formatare a șirurilor. Puteți utiliza verbele de formatare generală a șirurilor de caractere pentru a formata orice tip de date.
Puteți folosi %#v verb a scoate orice valoare, the %+v pentru structuri, the %T verb pentru tipul oricărei valori și %% verb pentru nicio valoare.
tip orice struct {
Nume şir
vârstă int
esteLoggedIn bool
}var instanță = orice {
nume: „John Doe”,
vârstă: 34,
este autentificat: Adevărat,
}
var rezultat = fmt. Sprintf ("Acesta este un struct exemplu de formatare %+v", instanță)
fmt. Println (rezultat)
The rezultat variabila deține șirul formatat al structurii instanțiate. Dacă îl imprimați, ar trebui să arate cam așa:
Acesta este un exemplu de formatare a structurii {nume: John Doe vârsta: 34 isLoggedIn:Adevărat}
Există verbe pentru formatarea anumitor tipuri de date native Go, inclusiv canale și pointeri.
Verb | Funcționalitate |
---|---|
%t | booleene. |
%d | int, int8 etc. |
%d, %#x dacă este tipărit cu %#v | uint, uint8 etc. |
%g | float32, complex64 etc. |
%s | şir. |
%p | chan. |
%P | indicator. |
Veți dori să vă asigurați că nu faceți greșeli cu verbele, deoarece acestea sunt sensibile la majuscule, cum ar fi chan și indicator verbe.
Formatarea numerelor întregi și flotante
Există verbe de formatare șir pentru formatarea numerelor întregi baze diferite. Puteți folosi oricare dintre aceste verbe pentru a formata numere întregi
Verb | Funcționalitate |
---|---|
%b | baza 2 |
%c | caracterul reprezentat de punctul de cod Unicode corespunzător. |
%d | baza 10. |
%o | baza 8. |
%O | baza 8 cu prefix 0o. |
%q | un caracter cu ghilimele simple a scăpat în siguranță cu sintaxa Go. |
%X | baza 16, cu litere mici pentru a-f. |
%X | baza 16, cu litere mari pentru A-F. |
%U | Format Unicode: U+1234; la fel ca „U+%04X”. |
De exemplu, puteți formata un număr întreg folosind %d verb:
var rezultat = fmt. Sprintf("Acesta este un exemplu de formatare întreg %d", 90)
fmt. Println (rezultat)
Acestea sunt verbele pentru formatarea numerelor în virgulă mobilă.
Verb | Funcționalitate |
---|---|
%b | notație științifică zecimală cu exponent o putere de două, în maniera strconv. FormatFloat cu formatul „b”, de ex. -123456p-78 |
%e | notație științifică, de ex. -1,234456e+78 |
%E | virgulă zecimală, dar fără exponent, de exemplu, 123,456 |
%f | virgulă zecimală, dar fără exponent, de exemplu, 123,456 |
%F | sinonim pentru %f. |
%g | %e pentru exponenți mari, %f în caz contrar. Precizie mai jos. |
%G | %E pentru exponenți mari, %F în caz contrar |
%X | notație hexazecimală (cu puterea zecimală a doi exponenți), de exemplu, -0x1,23abcp+20. |
%X | notație hexazecimală cu majuscule, de ex. -0X1.23ABCP+20. |
Iată un exemplu de formatare a unui punct zecimal fără exponent cu %f verb.
var rezultat = fmt. Sprintf("Acesta este un exemplu de formatare în virgulă mobilă %f", 432.9503)
fmt. Println (rezultat)
Puteți folosi întotdeauna verbele generale dacă nu sunteți sigur despre tip.
Formatare șiruri și octeți
Tipurile șirurile și felurile de octeți sunt destul de asemănătoare în Go. Acestea sunt steagurile pentru formatarea șirurilor și octeților.
Verb | Funcționalitate |
---|---|
%s | octeții neinterpretați ai șirului sau feliei |
%q | un șir de ghilimele duble a scăpat în siguranță cu sintaxa Go |
%X | baza 16, minuscule, două caractere pe octet |
%X | baza 16, majuscule, două caractere pe octet |
Iată un exemplu de formatare a unui șir cu %s verb.
var scor = "exemplu"
var rezultat = fmt. Sprintf ("Acesta este un şir exemplu de formatare %s", scor)
fmt. Println (rezultat)
Pachetul fmt este esențial pentru programarea Python
The fmt pachetul conține cea mai mare parte a funcționalității de care aveți nevoie pentru formatarea șirurilor. Go oferă, de asemenea, un siruri de caractere pachet pentru manipularea șirurilor și a Buturuga pachet care poate formata șiruri pentru înregistrare.
The fmt pachetul are funcții care implementează io. Scriitor și io. Cititor interfețe. Îl veți găsi util pentru multe cazuri de utilizare, cum ar fi crearea de aplicații web și de linie de comandă.