Sprintf ja Fprintf
Muotoile merkkijonoiksi ja kirjoittajille
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:
Printfkirjoittaa vakiotulosteeseen.Sprintfpalauttaa muotoillun merkkijonon.Fprintfkirjoittaa 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:
Sprintfpalauttaa merkkijonon.Fprintfkirjoittaa mille tahansaio.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())
}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
- Printf-verbien käyttö
- Sprintf ja Fprintf
- Stringer-rajapinta
- Syötteen skannaus