[ ОСНОВНЫЕ ФУНКЦИИ ]
Пакет fmt предоставляет три основные функции вывода. Они отличаются тем, как обрабатывают перевод строки и форматирование.
package main
import "fmt"
func main() {
fmt.Print("Без переноса строки") // курсор остаётся на той же строке
fmt.Println("С переносом строки") // добавляет \n в конце
fmt.Printf("Привет, %s!\n", "Gopher") // форматированный вывод
}
[ ФОРМАТНЫЕ ГЛАГОЛЫ ]
fmt.Printf использует форматные глаголы — специальные коды, которые заменяются значениями переменных. Каждый глагол начинается с символа %.
%d — целое число (decimal)%f — число с точкой (%.2f — два знака после запятой)%s — строка%v — любое значение (универсальный глагол)%T — тип переменной%b — двоичное представление числа%t — булево значение (true/false)
name := "Gopher"
score := 1500
pi := 3.14159
fmt.Printf("Игрок: %s\n", name)
fmt.Printf("Очки: %d\n", score)
fmt.Printf("Пи: %.2f\n", pi) // 3.14
fmt.Printf("Тип: %T\n", score) // int
fmt.Printf("Двоичный: %b\n", 42) // 101010
[ fmt.Sprintf — СТРОКА БЕЗ ВЫВОДА ]
fmt.Sprintf работает как fmt.Printf, но вместо вывода на экран возвращает готовую строку. Полезно, когда нужно сформировать строку для дальнейшего использования.
hero := "Марк"
hp := 80
msg := fmt.Sprintf("Игрок %s — здоровье: %d%%", hero, hp)
fmt.Println(msg) // Игрок Марк — здоровье: 80%
Чтобы вывести символ
%, нужно написать %%. Одинарный % будет воспринят как начало форматного глагола.
[ ВВОД ДАННЫХ — fmt.Scan ]
Для чтения данных от пользователя используется fmt.Scan. Она записывает введённое значение в переменную, адрес которой ты передаёшь через оператор &.
package main
import "fmt"
func main() {
var name string
fmt.Print("Введи имя: ")
fmt.Scan(&name)
fmt.Printf("Привет, %s!\n", name)
}
fmt.Scan нужен адрес переменной, чтобы записать в неё значение. Символ & перед именем переменной возвращает её адрес в памяти — это один из фундаментальных механизмов Go.
[ ПОПРОБУЙ САМ ]
Создай переменные для игрового персонажа: имя, уровень, здоровье.
Выведи красивую карточку персонажа с помощью fmt.Printf:
Имя: Марк | Уровень: 5 | HP: 100/100
Используй форматные глаголы %s и %d.
[ ПОКАЗАТЬ РЕШЕНИЕ ]
package main
import "fmt"
func main() {
name := "Марк"
level := 5
hp := 100
maxHp := 100
fmt.Printf("Имя: %s | Уровень: %d | HP: %d/%d\n",
name, level, hp, maxHp)
}