Ce face fmt.Println
fmt.Println este prima funcție pe care o folosești în Go. Primește oricâte valori, de orice tip, le transformă în text cu formatul implicit, pune un spațiu între ele și adaugă la final un rând nou (\n).
fmt.Print face același lucru, dar nu adaugă rândul nou la final și pune spațiu între două valori doar dacă niciuna nu este text (string). De aceea fmt.Print("a", "b") afișează ab, iar fmt.Print(1, 2) afișează 1 2.
Ambele afișează tablourile, slice-urile, map-urile și structurile direct: [1 2 3], map[Cluj:2 Iași:5] (cheile unui map apar sortate), {Ana 21}. Dacă un tip are metoda String() string (interfața fmt.Stringer), se afișează rezultatul ei.
Parametri
| Parametru | Descriere |
|---|---|
a ...any |
Oricâte valori, de orice tip. Pot lipsi: fmt.Println() afișează doar un rând gol. |
Ce returnează
Numărul de octeți scriși și o eroare de scriere. Aproape nimeni nu le verifică la afișarea pe ecran.
Exemple
Exemplul 1: Println cu valori de tipuri diferite
Println pune un spațiu între fiecare două valori și trece singur la rând nou după fiecare apel.
package main
import "fmt"
func main() {
nume := "Ana"
varsta := 21
media := 9.45
fmt.Println("Salut,", nume)
fmt.Println(nume, "are", varsta, "de ani și media", media)
fmt.Println()
fmt.Println(true, 'A', nil)
}
Rezultat
Salut, Ana
Ana are 21 de ani și media 9.45
true 65 <nil>
Exemplul 2: Print fără rând nou și fără spații între texte
Între două texte Print nu pune spațiu; între două numere pune. Rândul nou trebuie scris explicit cu \n.
package main
import "fmt"
func main() {
fmt.Print("Iași", "Cluj", "\n")
fmt.Print(1, 2, 3, "\n")
fmt.Print("Nota: ", 10, "\n")
for i := 1; i <= 3; i++ {
fmt.Print(i, " ")
}
fmt.Print("\n")
}
Rezultat
IașiCluj
1 2 3
Nota: 10
1 2 3
Exemplul 3: Afișarea colecțiilor și a structurilor
Map-urile sunt afișate cu cheile sortate, așa că rezultatul este mereu același.
package main
import "fmt"
type Student struct {
Nume string
Varsta int
}
func main() {
note := []int{9, 7, 10}
orase := map[string]int{"Iași": 5, "Cluj": 2, "Brașov": 3}
s := Student{"Ana", 21}
fmt.Println(note)
fmt.Println(orase)
fmt.Println(s)
fmt.Println(len(note), "note")
}
Rezultat
[9 7 10]
map[Brașov:3 Cluj:2 Iași:5]
{Ana 21}
3 note
Greșeli frecvente
- Scrii
fmt.Println("Total: %d", total). Println nu înțelege%d: afișează textul exact, urmat de valoare. Pentru formatare foloseștefmt.Printf(go vette avertizează). - Te aștepți ca
fmt.Print("Ana", "Ion")să pună spațiu între nume. Nu pune, pentru că ambele sunt texte. FoloseștePrintlnsau scrie spațiul tu. - Uiți să imporți pachetul: fără
import "fmt"programul nu compilează. Invers, un import nefolosit este tot eroare de compilare.
Comenzi înrudite
fmt.Printf: Afișează text formatat cu %d, %s, %.2f etc.; Sprintf returnează textul, Fprintf îl scrie într-un fișier sau alt Writer.fmt.Sprint: Transformă valorile în text și îl returnează, fără să afișeze nimic; Sprintln adaugă spații și rând nou.fmt.Fprintln: Scrie valorile într-un io.Writer (fișier, buffer, răspuns HTTP) cu regulile lui Println, respectiv Print.fmt.Stringer: Interfața tipurilor care știu să se descrie ca text: fmt folosește metoda String() la afișare.