Sprintf i Fprintf
Formatuj do stringów i obiektów zapisujących
Sprintf i Fprintf to bezpłatna lekcja Go Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Go Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Go Academy zawiera 4 lekcji w sumie.
Rodzina Printf
Pakiet fmt udostępnia trzy spokrewnione funkcje formatujące:
Printfzapisuje do standardowego wyjścia.Sprintfzwraca sformatowany łańcuch.Fprintfzapisuje do dowolnego writer'a.
package main
import "fmt"
func main() {
fmt.Printf("hello %s\n", "world")
}Sprintf zwraca łańcuch
fmt.Sprintf formatuje dokładnie tak samo jak Printf, ale zamiast wypisywać wynik, zwraca go jako łańcuch, który można zapisać lub wykorzystać ponownie.
package main
import "fmt"
func main() {
msg := fmt.Sprintf("%s scored %d", "Bob", 95)
fmt.Println(msg)
}Tworzenie identyfikatorów
Sprintf jest przydatne do składania kluczy, nazw plików lub etykiet z kilku części.
package main
import "fmt"
func main() {
id := fmt.Sprintf("user-%04d", 42)
fmt.Println(id)
}Formatowanie liczb jako tekstu
Należy użyć Sprintf, aby przekształcać liczby w estetycznie sformatowane łańcuchy, na przykład przedstawiające kwoty.
package main
import "fmt"
func main() {
label := fmt.Sprintf("Price: $%.2f", 7.5)
fmt.Println(label)
}Fprintf zapisuje do writer'a
fmt.Fprintf przyjmuje jako pierwszy argument io.Writer i formatuje dane, zapisując je do tego obiektu. os.Stdout jest przykładem takiego writer'a.
package main
import (
"fmt"
"os"
)
func main() {
fmt.Fprintf(os.Stdout, "to stdout: %d\n", 1)
}Zapis do standardowego wyjścia błędów
Należy wysyłać informacje diagnostyczne do os.Stderr za pomocą Fprintf, aby pozostały oddzielone od zwykłego wyjścia.
package main
import (
"fmt"
"os"
)
func main() {
fmt.Fprintf(os.Stderr, "warning: %s\n", "low disk")
}Fprintf zapisuje do buildera
Ponieważ strings.Builder również implementuje io.Writer, można formatować dane bezpośrednio do niego, a na końcu odczytać łańcuch.
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 zapisuje do bytes.Buffer
bytes.Buffer jest kolejnym często używanym celem zapisu. Należy zbudować zawartość, a następnie przekształcić ją w łańcuch.
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 i Fprint bez f
Wersje z f przyjmują łańcuch formatujący. Po usunięciu f otrzymujemy Sprint/Fprint, które po prostu łączą argumenty, stosując formatowanie domyślne.
package main
import "fmt"
func main() {
s := fmt.Sprint("a", 1, true)
fmt.Println(s)
}Sprintln dodaje spacje
fmt.Sprintln łączy argumenty spacjami, dodaje znak nowej linii i zwraca wynikowy łańcuch.
package main
import "fmt"
func main() {
s := fmt.Sprintln("x", 1, "y", 2)
fmt.Print(s)
}Wybór właściwego narzędzia
Wybór zależy od miejsca docelowego:
- Potrzebny jest łańcuch? Należy użyć
Sprintf. - Zapis do stdout? Należy użyć
Printf. - Zapis do pliku, bufora lub strumienia błędów? Należy użyć
Fprintf.
package main
import (
"fmt"
"os"
)
func main() {
s := fmt.Sprintf("count=%d", 3)
fmt.Fprintf(os.Stdout, "%s\n", s)
}Szybkie sprawdzenie
Która funkcja zwraca sformatowany tekst zamiast go wypisywać?
Podsumowanie: Sprintf i Fprintf
Poznałeś rodzinę funkcji formatujących:
Sprintfzwraca łańcuch.Fprintfzapisuje do dowolnegoio.Writer(stdout, stderr, buforów i builderów).- Warianty bez
fstosują formatowanie domyślne.
package main
import (
"fmt"
"strings"
)
func main() {
var b strings.Builder
fmt.Fprintf(&b, "result=%s", fmt.Sprintf("%d%%", 80))
fmt.Println(b.String())
}Często zadawane pytania
Czy lekcja „Sprintf i Fprintf” jest bezpłatna?
Tak — pełny tekst „Sprintf i Fprintf” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Go Academy, przejdź na CoddyKit PRO. Kurs Go Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Sprintf i Fprintf”?
Formatuj do stringów i obiektów zapisujących Ćwiczysz Go Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Go Academy?
Nie wymagamy żadnego doświadczenia. Go Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Sprintf i Fprintf”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Go Academy?
Tak. Każda lekcja Go Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Dyrektywy Printf
- Sprintf i Fprintf
- Interfejs Stringer
- Skanowanie danych wejściowych