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.

instagram viewer

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

De %v 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.

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("Dit is een 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 resultaat = fmt. Sprintf("Dit is een test %v", 90)

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

// schrijf gegevens naar standaarduitvoer
resultaat, err = fmt. Fprintf (schrijver, "Dit is een test %v", 90)

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

var nemen snaar

// lees gegevens van de gegeven string
leesString := tekenreeksen. NewReader("Dit is een test")

lees, fout := fmt. Fscanf (lezer, "%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 werkwoorden voor tekenreeksopmaak

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

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

U kunt de %#v 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 elk structureren { 
naam snaar
leeftijd int
is ingelogd bool
}

var instantie = elke {
naam: "John Doe",
leeftijd: 34,
is ingelogd: WAAR,
}

var resultaat = fmt. Sprintf("Dit is een structureren opmaakvoorbeeld %+v", instantie)
fmt. Println (resultaat)

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

Dit is een struct-opmaakvoorbeeld {naam: John Doe leeftijd: 34 isLoggedIn:WAAR}

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

Werkwoord Functionaliteit
%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.

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

Werkwoord Functionaliteit
%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.
%U Unicode-formaat: U+1234; hetzelfde als "U+%04X".

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

var resultaat = fmt. Sprintf("Dit is een integer opmaakvoorbeeld %d", 90)
fmt. Println (resultaat)

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

Werkwoord Functionaliteit
%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
%e wetenschappelijke notatie, b.v. -1.234456e+78
%E 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 resultaat = fmt. Sprintf("Dit is een voorbeeld van een opmaak met drijvende komma %f", 432.9503)
fmt. Println (resultaat)

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.

Werkwoord Functionaliteit
%s de niet-geïnterpreteerde bytes van de string of slice
%q een string met dubbele aanhalingstekens 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 = "voorbeeld"
var resultaat = fmt. Sprintf("Dit is een snaar opmaakvoorbeeld %s", score)
fmt. Println (resultaat)

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. auteur en io. Lezer interfaces. U zult het handig vinden voor veel gebruiksscenario's, zoals het bouwen van web- en opdrachtregeltoepassingen.