Direct naar de hoofdinhoud
Module 1 · Les 5 van 55/50 in de cursus~10 min
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

Go
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

WerkwoordWat het afdruktVoorbeeld
%v"standaardwaarde" — werkt op elk type{Ada 36}
%+vzoals %v maar met veldnamen in structs{Name:Ada Age:36}
%#v"Go-syntaxis" weergave van de waardemain.User{Name:"Ada", Age:36}
%Thet type waardefloat64
%dgeheel getal met grondtal 1042
%fzweven3.140000
%.2fzweven met 2 decimalen3.14
%stekenreeksAda
%q"geciteerde" tekenreeks (met aanhalingstekens en escapes)"Ada\n"
%tbooltrue
%xhexadecimaal (kleine letters)2a
%bbinair101010
Go
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) // float64

Sprintf: strings bouwen zonder ze af te drukken

Dezelfde interface als Printf, maar het resultaat wordt aan u geretourneerd als een string:

Go
msg := fmt.Sprintf("L'utente %s ha %d anni", "Ada", 36)
fmt.Println(msg) // L'utente Ada ha 36 anni

Je 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):

Go
if _, err := os.Open("missing"); err != nil {
    return fmt.Errorf("apertura config: %w", err)
}

Jouw beurt

Oefening#go.m1.l5.e1
Pogingen: 0Laden…

Druk de string 'ciao mondo' af met fmt.Println.

Editor laden…
Toon hint

`fmt.Println` neemt een string en voegt de nieuwe regel zelf toe.

Oplossing beschikbaar na 3 pogingen

Oefening#go.m1.l5.e2
Pogingen: 0Laden…

Gebruik fmt.Printf om 'eta=36' af te drukken, gevolgd door een nieuwe regel, waarbij u het %d werkwoord gebruikt voor het gehele getal.

Editor laden…
Toon hint

`Printf` voegt geen nieuwe regel toe: u moet `\\n` opnemen in de opmaaktekenreeks.

Oplossing beschikbaar na 3 pogingen

Quiz#go.m1.l5.e3
Klaar

Welk werkwoord drukt het dynamische TYPE van een waarde af?

Go
fmt.Printf("?\n", 3.14)
Antwoordmogelijkheden

Samenvatten

  • Print/Println/Printf verschillen in spaties en nieuwe regels.
  • %v is het jokerteken dat op elk type werkt; %+v toont veldnamen.
  • %T drukt het type af (handig voor snel debuggen).
  • Sprintf bouwt tekenreeksen; Errorf bouwt fouten op bij het inpakken (%w).
  • Printf voegt GEEN nieuwe regel toe: schrijf deze zelf in de formatstring.