Modulelessen (5/5)
Ingang/uitgang met fmt
Het fmt pakket van de standaardbibliotheek is uw belangrijkste hulpmiddel voor het afdrukken
de console, tekenreeksen opmaken en invoer lezen. Als je gebruikt hebt
printf in C voel je je meteen thuis, maar dan met wat extra verfijning
dankzij de werkwoorden %v en %T.
Print, Println, Printf: drie functies, drie gedragingen
fmt.Print("ciao ", "mondo") // "ciao mondo" (niente newline finale)
fmt.Println("ciao", "mondo") // "ciao mondo\n" (newline + spazi tra argomenti)
fmt.Printf("eta=%d\n", 36) // "eta=36\n" (format string esplicita)De werkwoorden die je altijd zult gebruiken
| Werkwoord | Wat het afdrukt | Voorbeeld |
|---|---|---|
%v | "standaardwaarde" — werkt op elk type | {Ada 36} |
%+v | zoals %v maar met veldnamen in structs | {Name:Ada Age:36} |
%#v | "Go-syntaxis" weergave van de waarde | main.User{Name:"Ada", Age:36} |
%T | het type waarde | float64 |
%d | geheel getal met grondtal 10 | 42 |
%f | zweven | 3.140000 |
%.2f | zweven met 2 decimalen | 3.14 |
%s | tekenreeks | Ada |
%q | "geciteerde" tekenreeks (met aanhalingstekens en escapes) | "Ada\n" |
%t | bool | true |
%x | hexadecimaal (kleine letters) | 2a |
%b | binair | 101010 |
u := struct{ Name string; Age int }{"Ada", 36}
fmt.Printf("%v\n", u) // {Ada 36}
fmt.Printf("%+v\n", u) // {Name:Ada Age:36}
fmt.Printf("%T\n", 3.14) // float64Sprintf: strings bouwen zonder ze af te drukken
Dezelfde interface als Printf, maar het resultaat wordt aan u geretourneerd als een
string:
msg := fmt.Sprintf("L'utente %s ha %d anni", "Ada", 36)
fmt.Println(msg) // L'utente Ada ha 36 anniJe zult het constant gebruiken om berichten, logs en fouten op te bouwen.
Errorf: tekenreeksen + foutomloop
fmt.Errorf maakt een error met opmaak in de stijl van Printf. Met de
speciaal werkwoord %w je kunt een bestaande fout verpakken om de fout te behouden
keten (we zullen dit uitgebreid bespreken in de Interfaces-module):
if _, err := os.Open("missing"); err != nil {
return fmt.Errorf("apertura config: %w", err)
}Jouw beurt
Druk de string 'ciao mondo' af met fmt.Println.
Toon hint
`fmt.Println` neemt een string en voegt de nieuwe regel zelf toe.
Oplossing beschikbaar na 3 pogingen
Gebruik fmt.Printf om 'eta=36' af te drukken, gevolgd door een nieuwe regel, waarbij u het %d werkwoord gebruikt voor het gehele getal.
Toon hint
`Printf` voegt geen nieuwe regel toe: u moet `\\n` opnemen in de opmaaktekenreeks.
Oplossing beschikbaar na 3 pogingen
Welk werkwoord drukt het dynamische TYPE van een waarde af?
fmt.Printf("?\n", 3.14)Samenvatten
Print/Println/Printfverschillen in spaties en nieuwe regels.%vis het jokerteken dat op elk type werkt;%+vtoont veldnamen.%Tdrukt het type af (handig voor snel debuggen).Sprintfbouwt tekenreeksen;Errorfbouwt fouten op bij het inpakken (%w).Printfvoegt GEEN nieuwe regel toe: schrijf deze zelf in de formatstring.