Com formatar cadenes a Go

Com formatar cadenes a Go

Mentre escriviu el codi Go, trobareu que el format de cadena és molt útil en moltes situacions. És possible que estigueu analitzant entrades o elaborant una sortida més complexa que una simple concatenació. És possible que estigueu treballant amb altres tipus que no siguin cadenes simples.





El format de cadena a Go utilitza el procés i la sintaxi familiars de la funció printf, que també utilitzen els llenguatges de Java a Haskell.





Go ofereix diversos mètodes per formatar cadenes al fitxer fmt paquet. Podeu utilitzar funcions i verbs per al format de cadena en funció de l'operació o les entrades que vulgueu formatar.





Format de cadena a Go

Les funcions del paquet fmt són similars a les contraparts, com ara la funció printf a bash o C. Go deriva els seus verbs de format de C.

Tu utilitzes verbs de format de cadena com a marcadors de posició per als vostres valors variables en una cadena que la conté. A continuació, podeu passar aquesta cadena de format a una funció com Printf , juntament amb els valors corresponents a aquests marcadors de posició.



No podeu utilitzar verbs de format de cadena amb el Imprimir i Println mètodes. Podeu utilitzar-los amb mètodes com ara Printf i Sprintf .

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

El % en verb imprimeix qualsevol valor en el seu format predeterminat. El Println El mètode no reconeix verbs i imprimeix els arguments que rep. El Printf i Sprintf ambdues funcions formaten el primer argument de cadena que els hi passeu.





  resultat de formatar nombres enters

Funcions de format de cadena al paquet fmt

Format de cadenes a el llenguatge de programació Go requereix que utilitzeu una funció de format de cadena i un verb. La funció retorna la cadena formatada i els verbs són els marcadors de posició per a les entrades a la cadena.

El Printf El mètode formata l'entrada segons l'especificador de format i retorna el nombre de bytes escrits o d'errors.





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

Convencionalment, no us haureu de preocupar pels errors quan utilitzeu Printf mètode.

com donar un text al text a Photoshop

El Sprintf El mètode formata segons el format especificat i retorna el resultat com a cadena.

var result = fmt.Sprintf("This is a test %v", 90) 

El Fprintf El mètode formatea la cadena i l'escriu a un escriptor (mètodes que implementen el io.Escriptor interfície)

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

El Fscanf El mètode escaneja des d'un lector i formata segons el format especificat.

var take string 

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

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

En aquest cas, el Fscanf descodifica la cadena del lector al prendre variable, i el llegir variable conté el resultat del format.

Els verbs de format de cadena

Go ofereix molts verbs de format que podeu utilitzar juntament amb les funcions de format de cadena.

Hi ha verbs generals de format de cadena com el % en verb als exemples de funcions de format de cadena. Podeu utilitzar els verbs de format de cadena general per donar format a qualsevol tipus de dades.

Podeu utilitzar el %#in verb per sortir qualsevol valor, el %+v per a les estructures, el %T verb per al tipus de qualsevol valor, i el %% verb sense valors.

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)

El resultat variable conté la cadena formatada de l'estructura instanciada. Si l'imprimeixes, hauria de semblar a això:

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

Hi ha els verbs per donar format a tipus de dades nadius de Go específics, inclosos els canals i els punters.

%t booleans.
%d int, int8, etc.
%d, %#x si s'imprimeix amb %#v uint, uint8, etc.
%g float32, complex64, etc.
%s corda.
%p chan.
%P punter.

Voleu assegurar-vos de no cometre errors amb els verbs, ja que són sensibles a majúscules, com ara chan i punter verbs.

Format de nombres enters i flotants

Hi ha verbs de format de cadena per donar format a nombres enters bases diferents . Podeu utilitzar qualsevol d'aquests verbs per formatar nombres enters

%b base 2
%c el caràcter representat pel punt de codi Unicode corresponent.
%d base 10.
%O base 8.
%O base 8 amb prefix 0o.
%q un caràcter de cometes simples es va escapar de manera segura amb la sintaxi Go.
%x base 16, amb lletres minúscules per a a-f.
%X base 16, amb majúscules per A-F.
%IN Format Unicode: U+1234; igual que 'U+%04X'.

Per exemple, podeu formatar un nombre enter amb el botó %d verb:

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

Aquests són els verbs per donar format als números de coma flotant.

%b notació científica sense decimals amb exponent una potència de dos, a la manera de strconv. FormatFloat amb el format 'b', p. ex. -123456p-78
% i notació científica, p. -1.234456e+78
% I punt decimal però sense exponent, per exemple, 123,456
%f punt decimal però sense exponent, per exemple, 123,456
%F sinònim de %f.
%g %e per a grans exponents, %f en cas contrari. Precisió a continuació.
%G %E per a grans exponents, %F en cas contrari
%x notació hexadecimal (amb potència decimal de dos exponents), p. ex., -0x1,23abcp+20.
%X notació hexadecimal en majúscules, p. -0X1.23ABCP+20.

Aquí teniu un exemple de formatar un punt decimal sense exponent amb el %f verb.

var result = fmt.Sprintf("This is a floating point formatting example %f", 432.9503) 
fmt.Println(result)

Sempre podeu utilitzar els verbs generals si no esteu segurs del tipus.

Formatatge de cadenes i bytes

Les cadenes i els tipus de porció de bytes són força similars a Go. Aquests són els indicadors per formatar cadenes i bytes.

%s els bytes no interpretats de la cadena o porció
%q una cadena de cometes dobles s'ha escapat amb seguretat amb la sintaxi Go
%x base 16, minúscules, dos caràcters per byte
%X base 16, majúscules, dos caràcters per byte

Aquí teniu un exemple de formatar una cadena amb el %s verb.

var score = "example" 
var result = fmt.Sprintf("This is a string formatting example %s", score)
fmt.Println(result)

El paquet fmt és essencial per a la programació de Python

El fmt El paquet conté la major part de la funcionalitat que necessitareu per al format de cadena. Go també ofereix a cordes paquet per a la manipulació de cordes i a registre paquet que pot formatar cadenes per al registre.

El fmt paquet té funcions que implementen el io.Escriptor i io.Reader interfícies. El trobareu útil per a molts casos d'ús com la creació d'aplicacions web i de línia d'ordres.