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

Переменная os.Stdin

Переменная os.Stdin представляет собой стандартный поток ввода (stdin) в операционной системе. Она является файловым дескриптором типа os.File и позволяет программе читать данные, поступающие из стандартного ввода. Это может быть ввод с клавиатуры, данные из конвейера или содержимое перенаправленного файла. Использование os.Stdin является основным способом взаимодействия с пользователем через командную строку в Go-программах.

Синтаксис

os.Stdin.Read([]byte) (int, error)

Переменная os.Stdin предоставляет методы для чтения данных. Основной метод - Read, который принимает байтовый срез и возвращает количество прочитанных байтов и ошибку. Также доступны методы ReadAt, Seek, Stat и другие, поскольку os.Stdin является файловым дескриптором.

Пример

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

package main import ( "fmt" "os" ) func main() { data := make([]byte, 1024) n, err := os.Stdin.Read(data) if err != nil { fmt.Println("Error:", err) return } fmt.Printf("Read %d bytes: %s", n, string(data[:n])) }

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

"Read 6 bytes: hello"

Пример

Для построчного чтения удобно использовать сканер из пакета bufio вместе с os.Stdin:

package main import ( "bufio" "fmt" "os" ) func main() { scanner := bufio.NewScanner(os.Stdin) fmt.Print("Enter text: ") scanner.Scan() text := scanner.Text() if err := scanner.Err(); err != nil { fmt.Println("Error:", err) return } fmt.Printf("You entered: %s", text) }

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

"Enter text: Hello Go" "You entered: Hello Go"

Пример

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

package main import ( "bufio" "fmt" "os" ) func main() { scanner := bufio.NewScanner(os.Stdin) fmt.Println("Enter lines (empty line to stop):") for scanner.Scan() { line := scanner.Text() if line == "" { break } fmt.Printf("Line: %s\n", line) } if err := scanner.Err(); err != nil { fmt.Println("Error:", err) } }

Результат выполнения кода при вводе строк "first", "second" и пустой строки:

"Enter lines (empty line to stop):" "Line: first" "Line: second"

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

  • переменную os.Stdout,
    которая представляет стандартный поток вывода
  • переменную os.Stderr,
    которая представляет стандартный поток ошибок
  • функцию os.Open,
    которая открывает файл для чтения
  • функцию os.ReadFile,
    которая читает содержимое файла целиком
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить