Функция fmt.Scanf

Функция fmt.Scanf считывает данные из стандартного ввода (обычно это клавиатура) и сохраняет их в переданные переменные согласно указанному формату. Первым параметром функция принимает строку формата, которая описывает ожидаемый формат ввода, а последующими параметрами - указатели на переменные, в которые будут сохранены прочитанные значения. Функция возвращает количество успешно прочитанных значений и ошибку, если она возникла.

Синтаксис

gon, err := fmt.Scanf(format, &var1, &var2, ...)

Пример

Давайте прочитаем целое число и строку из стандартного ввода:

gopackage main

import "fmt"

func main() {
  var age int
  var name string

  fmt.Print("Enter age and name: ")
  n, err := fmt.Scanf("%d %s", &age, &name)

  if err != nil {
    fmt.Println("Error:", err)
    return
  }

  fmt.Printf("Read %d values: age=%d, name=%s\n", n, age, name)
}

Результат выполнения кода при вводе 25 Alice:

go"Read 2 values: age=25, name=Alice"

Пример

Давайте прочитаем два целых числа и вычислим их сумму:

gopackage main

import "fmt"

func main() {
  var a, b int

  fmt.Print("Enter two numbers: ")
  _, err := fmt.Scanf("%d %d", &a, &b)

  if err != nil {
    fmt.Println("Error:", err)
    return
  }

  sum := a + b
  fmt.Printf("Sum: %d\n", sum)
}

Результат выполнения кода при вводе 10 20:

go"Sum: 30"

Пример

Давайте прочитаем число с плавающей точкой и логическое значение:

gopackage main

import "fmt"

func main() {
  var pi float64
  var flag bool

  fmt.Print("Enter pi and flag: ")
  _, err := fmt.Scanf("%f %t", &pi, &flag)

  if err != nil {
    fmt.Println("Error:", err)
    return
  }

  fmt.Printf("Pi: %.2f, Flag: %t\n", pi, flag)
}

Результат выполнения кода при вводе 3.14159 true:

go"Pi: 3.14, Flag: true"

Смотрите также

  • функцию fmt.Scan,
    которая читает данные без форматной строки
  • функцию fmt.Scanln,
    которая читает данные до символа новой строки
  • функцию fmt.Printf,
    которая форматирует вывод в стандартный поток
  • функцию fmt.Sprintf,
    которая форматирует строку без вывода на экран