Go Academy · Oppitunti

Sprintf ja Fprintf

Muotoile merkkijonoiksi ja kirjoittajille

Oppitunti 2/413 vaihetta

Sprintf ja Fprintf on ilmainen Go Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Go Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Go Academy-kurssilla on yhteensä 4 oppituntia.

Printf-perhe

fmt-paketissa on kolme toisiaan muistuttavaa muotoilufunktiota:

  • Printf kirjoittaa vakiotulosteeseen.
  • Sprintf palauttaa muotoillun merkkijonon.
  • Fprintf kirjoittaa mille tahansa writerille.
package main

import "fmt"

func main() {
    fmt.Printf("hello %s\n", "world")
}

Sprintf palauttaa merkkijonon

fmt.Sprintf muotoilee täsmälleen kuten Printf, mutta tulostamisen sijaan se palauttaa tuloksen merkkijonona, jonka voitte tallentaa tai käyttää uudelleen.

package main

import "fmt"

func main() {
    msg := fmt.Sprintf("%s scored %d", "Bob", 95)
    fmt.Println(msg)
}

Tunnisteiden muodostaminen

Sprintf on kätevä avainten, tiedostonimien tai tunnisteiden kokoamiseen osista.

package main

import "fmt"

func main() {
    id := fmt.Sprintf("user-%04d", 42)
    fmt.Println(id)
}

Lukujen muotoilu tekstiksi

Käyttäkää Sprintf-funktiota muuttaaksenne luvut siististi muotoilluiksi merkkijonoiksi, esimerkiksi rahasummiksi.

package main

import "fmt"

func main() {
    label := fmt.Sprintf("Price: $%.2f", 7.5)
    fmt.Println(label)
}

Fprintf kirjoittaa writerille

fmt.Fprintf ottaa ensimmäiseksi argumentikseen io.Writer-arvon ja muotoilee tekstin siihen. os.Stdout on yksi tällainen writer.

package main

import (
    "fmt"
    "os"
)

func main() {
    fmt.Fprintf(os.Stdout, "to stdout: %d\n", 1)
}

Kirjoittaminen vakiovirheeseen

Lähettäkää diagnostiikkatiedot os.Stderr-kohteeseen Fprintf-funktiolla, jotta ne pysyvät erillään normaalista tulosteesta.

package main

import (
    "fmt"
    "os"
)

func main() {
    fmt.Fprintf(os.Stderr, "warning: %s\n", "low disk")
}

Fprintf Builder-kohteeseen

Koska strings.Builder on myös io.Writer, voitte muotoilla tekstin suoraan siihen ja lukea merkkijonon lopuksi.

package main

import (
    "fmt"
    "strings"
)

func main() {
    var b strings.Builder
    fmt.Fprintf(&b, "%s=%d;", "x", 10)
    fmt.Fprintf(&b, "%s=%d", "y", 20)
    fmt.Println(b.String())
}

Fprintf bytes.Buffer-kohteeseen

bytes.Buffer on toinen yleinen writer-kohde. Kootkaa sisältö siihen ja muuntakaa se sitten merkkijonoksi.

package main

import (
    "bytes"
    "fmt"
)

func main() {
    var buf bytes.Buffer
    fmt.Fprintf(&buf, "row %d\n", 1)
    fmt.Fprintf(&buf, "row %d\n", 2)
    fmt.Print(buf.String())
}

Sprint ja Fprint ilman f-kirjainta

f-versiot ottavat muotoilumerkkijonon. Kun f jätetään pois, Sprint ja Fprint yksinkertaisesti yhdistävät argumentit oletusmuotoilua käyttäen.

package main

import "fmt"

func main() {
    s := fmt.Sprint("a", 1, true)
    fmt.Println(s)
}

Sprintln lisää välilyönnit

fmt.Sprintln yhdistää argumentit välilyönneillä, lisää rivinvaihdon ja palauttaa merkkijonon.

package main

import "fmt"

func main() {
    s := fmt.Sprintln("x", 1, "y", 2)
    fmt.Print(s)
}

Oikean työkalun valitseminen

Valitkaa funktio kohteen perusteella:

  • Tarvitsetteko merkkijonon? Käyttäkää Sprintf-funktiota.
  • Kirjoitatteko vakiotulosteeseen? Käyttäkää Printf-funktiota.
  • Kirjoitatteko tiedostoon, puskuriin tai virhesyötteeseen? Käyttäkää Fprintf-funktiota.
package main

import (
    "fmt"
    "os"
)

func main() {
    s := fmt.Sprintf("count=%d", 3)
    fmt.Fprintf(os.Stdout, "%s\n", s)
}

Pikatarkistus

Mikä funktio palauttaa muotoillun tekstin tulostamisen sijaan?

Kertaus: Sprintf ja Fprintf

Opitte muotoilufunktioiden perheen:

  • Sprintf palauttaa merkkijonon.
  • Fprintf kirjoittaa mille tahansa io.Writer-kohteelle (vakiotulosteeseen, vakiovirheeseen, puskureihin tai Buildereihin).
  • Funktioiden versiot ilman f-kirjainta käyttävät oletusmuotoilua.
package main

import (
    "fmt"
    "strings"
)

func main() {
    var b strings.Builder
    fmt.Fprintf(&b, "result=%s", fmt.Sprintf("%d%%", 80))
    fmt.Println(b.String())
}
Aloita maksutta

Opi Go tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
51
Oppitunnit
203

Usein kysytyt kysymykset

Onko oppitunti ”Sprintf ja Fprintf” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Go Academy-oppimispolun 3 oppituntia, myös oppitunnin “Sprintf ja Fprintf”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Go Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Sprintf ja Fprintf”?

Muotoile merkkijonoiksi ja kirjoittajille Harjoittelet Go Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Go Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Go Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Sprintf ja Fprintf”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Go Academy-oppitunnilla?

Kyllä. Jokainen Go Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Printf-verbien käyttö
  2. Sprintf ja Fprintf
  3. Stringer-rajapinta
  4. Syötteen skannaus
← Takaisin: Go Academy