Для записи stdout
в буфер и считывания оттуда построчно в языке программирования Go можно воспользоваться пакетом bytes
и перенаправлением вывода.
Сначала необходимо создать новый буфер с помощью типа bytes.Buffer
из пакета bytes
. Этот буфер будет использоваться для записи вывода stdout
. Затем, с помощью функции os.Stdout
можно перенаправить вывод в созданный буфер:
import ( "os" "io" "bytes" ) func main() { var buf bytes.Buffer // Перенаправляем вывод в буфер originalStdout := os.Stdout os.Stdout = &buf // Ваш код, который выводит данные в stdout // Возвращаем вывод обратно в stdout os.Stdout = originalStdout // Получаем содержимое буфера output := buf.String() // Разделяем вывод на строки lines := strings.Split(output, "n") for _, line := range lines { fmt.Println(line) } }
После того, как вывод был перенаправлен в буфер, можно получить его содержимое с помощью метода String()
структуры bytes.Buffer
. Затем, для работы со строкой вывода, можно использовать методы пакета strings
, такие как Split()
, чтобы разделить содержимое на строки. В данном примере разделителем используется символ новой строки n
. Затем, вы можете пройтись по каждой строке и выполнить нужные вам операции.
Обратите внимание, что не все программы корректно реализуют вывод в stdout
, и может быть необходимо использовать другие подходы для захвата вывода.