Strings opmaken in Go

Strings opmaken in Go

Terwijl u Go-code schrijft, zult u de opmaak van tekenreeksen in veel situaties erg handig vinden. Mogelijk parseert u invoer of maakt u complexere uitvoer dan eenvoudige aaneenschakeling. Mogelijk werkt u met andere typen dan gewone tekenreeksen.





String-opmaak in Go maakt gebruik van het bekende proces en de syntaxis van de functie printf, die ook in talen van Java tot Haskell wordt gebruikt.





Go biedt verschillende methoden voor het opmaken van tekenreeksen in de fmt pakket. U kunt functies en werkwoorden gebruiken voor het opmaken van tekenreeksen, afhankelijk van de bewerking of invoer die u wilt opmaken.





Tekenreeksopmaak in Go

De functies in het fmt-pakket zijn vergelijkbaar met tegenhangers, zoals: de printf-functie in bash of C. Go ontleent zijn opmaakwerkwoorden aan C.

Je gebruikt werkwoorden voor tekenreeksopmaak als tijdelijke aanduidingen voor uw variabele waarden in een bevattende tekenreeks. U kunt die opmaakreeks dan doorgeven aan een functie zoals Printf , samen met waarden die overeenkomen met die tijdelijke aanduidingen.



U kunt geen werkwoorden voor tekenreeksopmaak gebruiken met de Afdrukken en Println methoden. Je kunt ze gebruiken met methoden zoals: Printf en Sprintf .

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

De %in werkwoord drukt elke waarde af in zijn standaardformaat. De Println methode herkent geen werkwoorden en drukt alle argumenten af ​​die het ontvangt. De Printf en Sprintf functies formatteren beide het eerste tekenreeksargument dat u eraan doorgeeft.





  resultaat van het formatteren van gehele getallen

Tekenreeksopmaakfuncties in het fmt-pakket

Tekenreeksen opmaken in de Go programmeertaal vereist dat u een tekenreeksopmaakfunctie en een werkwoord gebruikt. De functie retourneert de opgemaakte tekenreeks en de werkwoorden zijn de tijdelijke aanduidingen voor de invoer van de tekenreeks.

De Printf methode formatteert de invoer volgens de formaatspecificatie en retourneert het aantal geschreven bytes of fouten.





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

Conventioneel hoeft u zich geen zorgen te maken over fouten wanneer u de Printf methode.

De Sprintf methode formatteert volgens het opgegeven formaat en retourneert het resultaat als een tekenreeks.

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

De Fprintf methode formatteert de tekenreeks en schrijft deze naar een schrijver (methoden die de io.Schrijver koppel)

comcast kennisgeving van claim van inbreuk op het auteursrecht 2017
// write data to standard output 
result, err = fmt.Fprintf(writer, "This is a test %v", 90)

De Fscanf methode scant van een lezer en formatteert volgens het opgegeven formaat.

var take string 

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

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

In dit geval is de Fscanf decodeert de string van de lezer in de nemen variabel, en de lezen variabele bevat het resultaat van het formaat.

De tekenreeksopmaakwerkwoorden

Go biedt veel opmaakwerkwoorden die u samen met de tekenreeksopmaakfuncties kunt gebruiken.

Er zijn algemene werkwoorden voor tekenreeksopmaak zoals de %in werkwoord in de voorbeelden van tekenreeksopmaakfuncties. U kunt de algemene werkwoorden voor tekenreeksopmaak gebruiken om elk gegevenstype op te maken.

U kunt de %#in werkwoord om elke waarde uit te voeren, de %+v voor structuren, de %T werkwoord voor het type van een waarde, en de %% werkwoord voor geen waarden.

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)

De resultaat variabele bevat de opgemaakte string van de geïnstantieerde struct. Als u het uitprint, ziet het er ongeveer zo uit:

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

Er zijn de werkwoorden voor het opmaken van specifieke Go-native datatypes, inclusief kanalen en pointers.

%t booleans.
%d int, int8, enz.
%d, %#x indien afgedrukt met %#v uint, uint8, enz.
%g float32, complex64, enz.
%s snaar.
%p chan.
%P wijzer.

Je moet ervoor zorgen dat je geen fouten maakt met de werkwoorden, omdat ze hoofdlettergevoelig zijn, zoals de chan en wijzer werkwoorden.

Windows 10 virtueel geheugen aanbevolen grootte

Gehele getallen en drijvers opmaken

Er zijn werkwoorden voor het opmaken van tekenreeksen voor het opmaken van gehele getallen in verschillende bases . U kunt elk van deze werkwoorden gebruiken om gehele getallen op te maken

%b basis 2
%c het teken dat wordt vertegenwoordigd door het overeenkomstige Unicode-codepunt.
%d basis 10.
%O basis 8.
%O basis 8 met 0o voorvoegsel.
%q een enkelvoudig geciteerd teken is veilig ontsnapt met de Go-syntaxis.
%x basis 16, met kleine letters voor a-f.
%X basis 16, met hoofdletters voor A-F.
%IN Unicode-formaat: U+1234; hetzelfde als 'U+%04X'.

U kunt bijvoorbeeld een geheel getal opmaken met de %d werkwoord:

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

Dit zijn de werkwoorden voor het opmaken van getallen met drijvende komma.

%b wetenschappelijke notatie zonder decimalen met exponent een macht van twee, op de manier van strconv. FormatFloat met het 'b'-formaat, b.v. -123456p-78
%en wetenschappelijke notatie, b.v. -1.234456e+78
%EN decimale punt maar geen exponent, bijvoorbeeld 123.456
%f decimale punt maar geen exponent, bijvoorbeeld 123.456
%F synoniem voor %f.
%g %e voor grote exponenten, anders %f. Precisie hieronder.
%G %E voor grote exponenten, anders %F
%x hexadecimale notatie (met decimale macht van twee exponenten), bijv. -0x1.23abcp+20.
%X hexadecimale notatie in hoofdletters, bijv. -0X1.23ABCP+20.

Hier is een voorbeeld van het opmaken van een decimaalteken zonder exponent met de %f werkwoord.

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

Je kunt altijd de algemene werkwoorden gebruiken als je niet zeker bent over het type.

Tekenreeksen en bytes opmaken

Strings en segmenten van bytetypes zijn vrij gelijkaardig in Go. Dit zijn de vlaggen voor het formatteren van strings en bytes.

%s de niet-geïnterpreteerde bytes van de string of slice
%q een string met dubbele aanhalingstekens is veilig ontsnapt met Go-syntaxis
%x grondtal 16, kleine letters, twee tekens per byte
%X grondtal 16, hoofdletters, twee tekens per byte

Hier is een voorbeeld van het opmaken van een string met de %s werkwoord.

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

Het fmt-pakket is essentieel voor Python-programmering

De fmt pakket bevat de meeste functionaliteit die u nodig hebt voor het opmaken van tekenreeksen. Go biedt ook een snaren pakket voor stringmanipulatie en a log pakket dat tekenreeksen kan opmaken voor logboekregistratie.

De fmt pakket heeft functies die de io.Schrijver en io.Reader interfaces. U zult het handig vinden voor veel gebruiksscenario's, zoals het bouwen van web- en opdrachtregeltoepassingen.