Функция fmt.Sscan
Функция fmt.Sscan сканирует строку и извлекает из нее значения,
разделенные пробелами. Первым параметром функция принимает
строку для сканирования, а последующими параметрами - указатели
на переменные, в которые будут записаны извлеченные значения.
Функция возвращает количество успешно обработанных элементов
и ошибку, если она произошла.
Синтаксис
fmt.Sscan(str, &var1, &var2, ...)
Пример
Давайте извлечем из строки "123 456" два целых числа:
package main
import (
"fmt"
)
func main() {
var a, b int
str := "123 456"
res, err := fmt.Sscan(str, &a, &b)
if err != nil {
fmt.Println(err)
}
fmt.Println(res)
fmt.Println(a, b)
}
Результат выполнения кода:
2
123 456
Пример
Извлечем из строки "hello world 42" строку, строку и число:
package main
import (
"fmt"
)
func main() {
var s1, s2 string
var num int
str := "hello world 42"
res, err := fmt.Sscan(str, &s1, &s2, &num)
if err != nil {
fmt.Println(err)
}
fmt.Println(res)
fmt.Println(s1, s2, num)
}
Результат выполнения кода:
3
hello world 42
Пример
Если количество переменных не совпадает с количеством элементов в строке, функция вернет ошибку. Например, попробуем извлечь три числа из строки с двумя значениями:
package main
import (
"fmt"
)
func main() {
var a, b, c int
str := "10 20"
res, err := fmt.Sscan(str, &a, &b, &c)
if err != nil {
fmt.Println("Error:", err)
}
fmt.Println("Count:", res)
}
Результат выполнения кода:
"Error: expected 3 fields, found 2"
Count: 2
Смотрите также
-
функцию
fmt.Scan,
которая сканирует данные из стандартного ввода -
функцию
fmt.Scanln,
которая сканирует данные до перевода строки -
функцию
fmt.Sprintf,
которая форматирует строку без вывода -
функцию
fmt.Fscan,
которая сканирует данные из io.Reader