Функция fmt.Fscan
Функция fmt.Fscan считывает данные из указанного источника ввода
(например, из файла или строки) и сохраняет их в переданные переменные.
В первый параметр функция принимает интерфейс io.Reader -
источник данных, во второй и последующие параметры -
указатели на переменные, в которые необходимо сохранить считанные значения.
Функция возвращает количество успешно считанных элементов и ошибку.
Синтаксис
func Fscan(r io.Reader, a ...any) (n int, err error)
Пример с чтением из строки
Давайте считаем из строки два целых числа и строку:
package main
import (
"fmt"
"strings"
)
func main() {
input := strings.NewReader("42 100 Golang")
var a, b int
var s string
n, err := fmt.Fscan(input, &a, &b, &s)
if err != nil {
fmt.Println(err)
return
}
fmt.Printf("Count: %d\n", n)
fmt.Printf("a: %d, b: %d, s: %s\n", a, b, s)
}
Результат выполнения кода:
"Count: 3"
"a: 42, b: 100, s: Golang"
Пример с чтением из файла
Создадим файл с данными и считаем из него значения:
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.Open("data.txt")
if err != nil {
fmt.Println(err)
return
}
defer file.Close()
var name string
var age int
var score float64
n, err := fmt.Fscan(file, &name, &age, &score)
if err != nil {
fmt.Println(err)
return
}
fmt.Printf("Count: %d\n", n)
fmt.Printf("Name: %s, Age: %d, Score: %.2f\n", name, age, score)
}
При условии, что в файле data.txt содержится строка
"Alice 30 95.5", результат выполнения кода будет:
"Count: 3"
"Name: Alice, Age: 30, Score: 95.50"
Пример с обработкой ошибок
Рассмотрим случай, когда данных недостаточно для заполнения переменных:
package main
import (
"fmt"
"strings"
)
func main() {
input := strings.NewReader("42")
var a, b int
n, err := fmt.Fscan(input, &a, &b)
if err != nil {
fmt.Println("Error:", err)
fmt.Println("Read count:", n)
return
}
fmt.Printf("a: %d, b: %d\n", a, b)
}
Результат выполнения кода:
"Error: EOF"
"Read count: 1"
Смотрите также
-
функцию
fmt.Fscanln,
которая читает данные до конца строки -
функцию
fmt.Fscanf,
которая читает данные по заданному формату -
функцию
fmt.Sscan,
которая читает данные из строки -
функцию
fmt.Scan,
которая читает данные из стандартного ввода