Come formattare le stringhe in Go

Come formattare le stringhe in Go

Mentre scrivi il codice Go, troverai la formattazione delle stringhe molto utile in molte situazioni. Potresti analizzare input o creare output più complessi rispetto alla semplice concatenazione. Potresti lavorare con tipi diversi dalle stringhe semplici.





La formattazione delle stringhe in Go utilizza il processo e la sintassi familiari della funzione printf, utilizzata anche da linguaggi da Java a Haskell.





Go fornisce vari metodi per formattare le stringhe nel file fmt pacchetto. È possibile utilizzare funzioni e verbi per la formattazione delle stringhe a seconda dell'operazione o degli input che si desidera formattare.





Formattazione delle stringhe in Go

Le funzioni nel pacchetto fmt sono simili alle controparti, come la funzione printf in bash o C. Go deriva i suoi verbi di formattazione da C.

Usate verbi di formattazione delle stringhe come segnaposto per i valori delle variabili in una stringa contenente. Puoi quindi passare quella stringa di formattazione a una funzione come Printf , insieme ai valori corrispondenti a quei segnaposto.



Non puoi usare i verbi di formattazione delle stringhe con Stampa e Println metodi. Puoi usarli con metodi come Printf e Sprintf .

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

Il %in verbo stampa qualsiasi valore nel suo formato predefinito. Il Println il metodo non riconosce i verbi e stampa tutti gli argomenti che riceve. Il Printf e Sprintf entrambe le funzioni formattano il primo argomento stringa che si passa loro.





come trovare il proprietario del numero di telefono internazionale
  risultato della formattazione di numeri interi

Funzioni di formattazione delle stringhe nel pacchetto fmt

Formattazione delle stringhe in il linguaggio di programmazione Go richiede l'utilizzo di una funzione di formattazione delle stringhe e di un verbo. La funzione restituisce la stringa formattata e i verbi sono i segnaposto per gli input della stringa.

Il Printf formatta l'input in base all'identificatore di formato e restituisce il numero di byte scritti o errori.





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

Convenzionalmente, non dovrai preoccuparti di errori quando usi il Printf metodo.

Il Sprintf il metodo si formatta in base al formato specificato e restituisce il risultato come stringa.

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

Il Fprintf formatta la stringa e la scrive in uno scrittore (metodi che implementano il io.Scrittore interfaccia)

7BB562CA34A1CE41BBEAA4A50ED8AE792EB0FE33

Il Fscanf il metodo esegue la scansione da un lettore e formatta in base al formato specificato.

var take string 

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

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

In questo caso, il Fscanf decodifica la stringa dal lettore nel file prendere variabile, e il leggere variabile contiene il risultato del formato.

I verbi di formattazione delle stringhe

Go fornisce molti verbi di formattazione che puoi usare insieme alle funzioni di formattazione delle stringhe.

Esistono verbi di formattazione di stringhe generali come il %in verbo negli esempi di funzioni di formattazione della stringa. È possibile utilizzare i verbi di formattazione delle stringhe generali per formattare qualsiasi tipo di dati.

Puoi usare il %#in verbo per produrre qualsiasi valore, il %+v per le strutture, il %T verbo per il tipo di qualsiasi valore e il %% verbo senza valori.

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)

Il risultato variabile contiene la stringa formattata della struttura istanziata. Se lo stampi, dovrebbe assomigliare a questo:

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

Esistono i verbi per la formattazione di tipi di dati nativi Go specifici, inclusi canali e puntatori.

%t booleani.
%d int, int8, ecc.
%d, %#x se stampato con %#v uint, uint8, ecc.
%g float32, complex64, ecc.
%S corda.
%p can.
%P puntatore.

Dovrai assicurarti di non commettere errori con i verbi poiché fanno distinzione tra maiuscole e minuscole, come il can e puntatore verbi.

Formattazione di numeri interi e float

Esistono verbi di formattazione delle stringhe per la formattazione di interi basi diverse . Puoi usare uno qualsiasi di questi verbi per formattare numeri interi

%b base 2
%c il carattere rappresentato dal corrispondente punto di codice Unicode.
%d base 10.
%O base 8.
%O base 8 con prefisso 0o.
%q un carattere letterale tra virgolette è sfuggito in modo sicuro con la sintassi Go.
%X base 16, con lettere minuscole per a-f.
%X base 16, con lettere maiuscole per A-F.
%IN Formato Unicode: U+1234; come 'U+%04X'.

Ad esempio, puoi formattare un numero intero usando %d verbo:

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

Questi sono i verbi per formattare i numeri in virgola mobile.

%b notazione scientifica senza decimali con esponente una potenza di due, alla maniera di strconv. FormatFloat con il formato 'b', ad es. -123456p-78
%e notazione scientifica, ad es. -1.234456e+78
%E punto decimale ma nessun esponente, ad esempio 123.456
%f punto decimale ma nessun esponente, ad esempio 123.456
%F sinonimo di %f.
%g %e per esponenti grandi, %f altrimenti. Precisione sotto.
%G %E per esponenti grandi, %F altrimenti
%X notazione esadecimale (con potenza decimale di due esponenti), ad esempio -0x1.23abcp+20.
%X notazione esadecimale maiuscola, ad es. -0X1.23ABCP+20.

Ecco un esempio di formattazione di un punto decimale senza esponente con il %f verbo.

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

Puoi sempre usare i verbi generici se non sei sicuro del tipo.

Formattazione di stringhe e byte

Le stringhe e i tipi di slice di byte sono abbastanza simili in Go. Questi sono i flag per la formattazione di stringhe e byte.

%S i byte non interpretati della stringa o della slice
%q una stringa tra virgolette è sfuggita in modo sicuro con la sintassi Go
%X base 16, minuscolo, due caratteri per byte
%X base 16, maiuscolo, due caratteri per byte

Ecco un esempio di formattazione di una stringa con %S verbo.

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

Il pacchetto fmt è essenziale per la programmazione Python

Il fmt il pacchetto contiene la maggior parte delle funzionalità necessarie per la formattazione delle stringhe. Go fornisce anche a stringhe pacchetto per la manipolazione di stringhe e a tronco d'albero pacchetto in grado di formattare stringhe per la registrazione.

Il fmt il pacchetto ha funzioni che implementano il io.Scrittore e io.Reader interfacce. Lo troverai utile per molti casi d'uso come la creazione di applicazioni Web e a riga di comando.