Форматирование ввода и вывода в Go: подробное руководство по Scanf() и Printf()

В программировании на Go пакет fmt предоставляет набор функций для форматирования ввода и вывода. Две важные функции в этом пакете — Scanf() и Printf(), которые позволяют вам читать форматированный ввод и записывать форматированный вывод соответственно. В этой статье мы рассмотрим различные методы использования этих функций на примерах кода.

Метод 1: базовое форматирование ввода и вывода
Самый простой способ использования Scanf() и Printf() — указать строку формата и переменные для чтения или записи. Вот пример:

package main
import "fmt"
func main() {
   var name string
   var age int
   fmt.Printf("Enter your name: ")
   fmt.Scanf("%s", &name)
   fmt.Printf("Enter your age: ")
   fmt.Scanf("%d", &age)
   fmt.Printf("Name: %s\n", name)
   fmt.Printf("Age: %d\n", age)
}

Метод 2: чтение и запись нескольких значений
Вы можете прочитать или записать несколько значений с помощью одного вызова Scanf() или Printf(). Для этого вам необходимо указать строку формата и предоставить соответствующие переменные. Вот пример:

package main
import "fmt"
func main() {
   var name string
   var age int
   fmt.Scanf("%s %d", &name, &age)
   fmt.Printf("Name: %s, Age: %d\n", name, age)
}

Метод 3: спецификаторы форматирования
Пакет fmt поддерживает различные спецификаторы форматирования для разных типов значений. Например, «%d» используется для целых чисел, «%f» для чисел с плавающей запятой и «%s» для строк. Вот пример, демонстрирующий различные спецификаторы форматирования:

package main
import "fmt"
func main() {
   var num int = 42
   var pi float64 = 3.1416
   var name string = "John"
   fmt.Printf("Integer: %d\n", num)
   fmt.Printf("Float: %f\n", pi)
   fmt.Printf("String: %s\n", name)
}

Метод 4: пользовательское форматирование с помощью глаголов
Вы также можете использовать пользовательские глаголы форматирования для управления выходным форматом. Например, «%10d» задает минимальную ширину поля в 10 символов для целого числа. Вот пример:

package main
import "fmt"
func main() {
   var num int = 42
   fmt.Printf("Formatted: %10d\n", num)
}

Метод 5: обработка ошибок
При использовании Scanf() важно обрабатывать любые потенциальные ошибки. Функция возвращает количество успешно отсканированных элементов, которое можно использовать для проверки правильности форматирования входных данных. Вот пример:

package main
import "fmt"
func main() {
   var num int
   n, err := fmt.Scanf("%d", &num)
   if err != nil {
      fmt.Println("Error:", err)
   } else {
      fmt.Printf("Scanned %d item(s)\n", n)
   }
}

В этой статье мы рассмотрели различные методы использования функций Scanf() и Printf() в Go для форматирования ввода и вывода. Мы рассмотрели базовое форматирование ввода и вывода, чтение и запись нескольких значений, спецификаторы форматирования, пользовательское форматирование с помощью глаголов и обработку ошибок. Освоив эти методы, вы сможете эффективно форматировать ввод и вывод вашей программы в Go.