Cum se formatează șirurile în Go

Cum se formatează șirurile în Go

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

The %în 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.





  rezultat al formatării numerelor întregi

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.





cum să vă recuperați contul de Facebook
fmt.Printf("This is a 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 result = fmt.Sprintf("This is a test %v", 90) 

The Fprintf metoda formatează șirul și îl scrie unui writer (metode care implementează io.Scriitor interfata)

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

The Fscanf metoda scanează dintr-un cititor și formatează conform formatului specificat.

var take string 

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

read, err := fmt.Fscanf(reader, "%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 %în 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 %#în verb a scoate orice valoare, the %+v pentru structuri, the %T verb pentru tipul oricărei valori și %% verb pentru nicio valoare.

cel mai bun software gratuit de cartografiere mentală 2019
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 rezultat variabila deține șirul formatat al structurii instanțiate. Dacă îl imprimați, ar trebui să arate cam așa:

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

Există verbe pentru formatarea anumitor tipuri de date native Go, inclusiv canale și pointeri.

%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

%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.
%ÎN Format Unicode: U+1234; la fel ca „U+%04X”.

De exemplu, puteți formata un număr întreg folosind %d verb:

var result = fmt.Sprintf("This is an integer formatting example %d", 90) 
fmt.Println(result)

Acestea sunt verbele pentru formatarea numerelor în virgulă mobilă.

%b notație științifică zecimală cu exponent o putere de două, în maniera strconv. FormatFloat cu formatul „b”, de ex. -123456p-78
%și notație științifică, de ex. -1,234456e+78
%ȘI 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 result = fmt.Sprintf("This is a floating point formatting example %f", 432.9503) 
fmt.Println(result)

Puteți folosi întotdeauna verbele generale dacă nu sunteți sigur despre tip.

raspberry pi pornește scriptul python la pornire

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.

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

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