РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
640 of 1593 menu

Функция fmt.Sscanf

Функция fmt.Sscanf сканирует строку и извлекает из нее значения в соответствии с заданным форматом. Она возвращает количество успешно обработанных элементов и ошибку, если она возникла. Первым параметром функция принимает строку для сканирования, вторым - строку формата, третьим и последующими - указатели на переменные, в которые будут сохранены извлеченные значения.

Синтаксис

fmt.Sscanf(str, format, a...)

Пример ⁅n="sect"⁆

Давайте извлечем из строки "John 25 1.75" значения разных типов:

package main import ( "fmt" ) func main() { str := "John 25 1.75" var name string var age int var height float64 n, err := fmt.Sscanf(str, "%s %d %f", &name, &age, &height) if err != nil { fmt.Println(err) return } fmt.Printf("Name: %s, Age: %d, Height: %.2f, Count: %d", name, age, height, n) }

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

"Name: John, Age: 25, Height: 1.75, Count: 3"

Пример ⁅n="sect"⁆

Давайте извлечем только часть данных из строки:

package main import ( "fmt" ) func main() { str := "Product: laptop, Price: 999.99" var price float64 n, err := fmt.Sscanf(str, "Product: %s, Price: %f", new(string), &price) if err != nil { fmt.Println(err) return } fmt.Printf("Price: %.2f, Items parsed: %d", price, n) }

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

"Price: 999.99, Items parsed: 2"

Пример ⁅n="sect"⁆

Давайте извлечем дату из строки в формате "2026-09-04":

package main import ( "fmt" ) func main() { str := "2026-09-04" var year, month, day int n, err := fmt.Sscanf(str, "%d-%d-%d", &year, &month, &day) if err != nil { fmt.Println(err) return } fmt.Printf("Year: %d, Month: %d, Day: %d, Parsed: %d", year, month, day, n) }

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

"Year: 2026, Month: 9, Day: 4, Parsed: 3"

Пример ⁅n="sect"⁆

Давайте обработаем случай, когда формат не соответствует строке:

package main import ( "fmt" ) func main() { str := "abc 123" var num int n, err := fmt.Sscanf(str, "%d", &num) if err != nil { fmt.Printf("Error: %v, Items parsed: %d", err, n) return } fmt.Printf("Number: %d", num) }

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

"Error: expected integer, Items parsed: 0"

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

  • функцию fmt.Scan,
    которая сканирует данные из стандартного ввода
  • функцию fmt.Sprintf,
    которая форматирует строку без вывода
  • функцию fmt.Sscan,
    которая сканирует строку без форматирования
  • функцию fmt.Sscanln,
    которая сканирует строку до новой строки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить