Функция fmt.Scanln
Функция fmt.Scanln считывает данные из стандартного ввода
до символа новой строки. Она сканирует текст, разделенный пробелами,
и сохраняет значения в переданные аргументы. В отличие от функции
fmt.Scan, которая игнорирует символы новой строки,
fmt.Scanln останавливает чтение при встрече с \n.
Первый параметр функции - это указатели на переменные, в которые
будут сохранены считанные значения. Функция возвращает количество
успешно считанных элементов и ошибку, если она возникла.
Синтаксис
fmt.Scanln(a ...interface{}) (n int, err error)
Пример
Давайте считаем имя и возраст пользователя в одной строке:
package main
import "fmt"
func main() {
var name string
var age int
fmt.Print("Enter name and age: ")
n, err := fmt.Scanln(&name, &age)
fmt.Printf("Scanned: %d items\n", n)
fmt.Printf("Error: %v\n", err)
fmt.Printf("Name: %s, Age: %d\n", name, age)
}
Результат выполнения кода при вводе "Alice 25":
"Enter name and age: Alice 25"
"Scanned: 2 items"
"Error: <nil>"
"Name: Alice, Age: 25"
Пример
Давайте рассмотрим случай, когда вводится меньше значений, чем ожидается:
package main
import "fmt"
func main() {
var name string
var age int
fmt.Print("Enter name and age: ")
n, err := fmt.Scanln(&name, &age)
fmt.Printf("Scanned: %d items\n", n)
fmt.Printf("Error: %v\n", err)
fmt.Printf("Name: %s, Age: %d\n", name, age)
}
Результат выполнения кода при вводе "Bob":
"Enter name and age: Bob"
"Scanned: 1 items"
"Error: expected newline"
"Name: Bob, Age: 0"
Пример
Давайте используем fmt.Scanln для чтения нескольких строк:
package main
import "fmt"
func main() {
var first string
var second string
fmt.Print("Enter first line: ")
fmt.Scanln(&first)
fmt.Print("Enter second line: ")
fmt.Scanln(&second)
fmt.Printf("First: %s\n", first)
fmt.Printf("Second: %s\n", second)
}
Результат выполнения кода при вводе "Hello" и "World":
"Enter first line: Hello"
"Enter second line: World"
"First: Hello"
"Second: World"
Смотрите также
-
функцию
fmt.Scan,
которая сканирует текст, игнорируя символы новой строки -
функцию
fmt.Scanf,
которая сканирует данные по указанному формату -
функцию
fmt.Println,
которая выводит данные в стандартный вывод с добавлением новой строки -
функцию
fmt.Print,
которая выводит данные без добавления новой строки