Функция WriteString
func WriteString(w Writer, s string) (n int, err error)
WriteString записывает содержимое строки s в w, которая принимает часть байтов. Если w реализует StringWriter, его метод WriteString вызывается напрямую. В противном случае w.Write вызывается ровно один раз.
package main
import (
"io"
"os"
)
func main() {
io.WriteString(os.Stdout, "Hello World")
}
Вывод:
Hello World
Интерфейс Writer
Writer - это интерфейс, который оборачивает базовый метод Write.
type Writer interface {
Write(p []byte) (n int, err error)
}
Write записывает len(p) байтов из p в подлежащий поток данных. Он возвращает количество байтов, записанных из p (0 <= n <= len(p)), и любую обнаруженную ошибку, которая привела к преждевременной остановке записи. Write должен возвращать ошибку, отличную от nil, если он возвращает n < len(p). Write не должен изменять данные среза, даже временно.
Реализации не должны сохранять p.
Функция MultiWriter
func MultiWriter(writers ...Writer) Writer
MultiWriter создает writer, который дублирует свои записи всем предоставленным writer, аналогично команде Unix tee(1).
Каждая запись пишется каждому из перечисленных writer по одному. Если перечисленный writer возвращает ошибку, эта операция записи останавливается и возвращает ошибку; это не продолжается вниз по списку.
package main
import (
"bytes"
"fmt"
"io"
"log"
"strings"
)
func main() {
r := strings.NewReader("some io.Reader stream to be read\n")
var buf1, buf2 bytes.Buffer
w := io.MultiWriter(&buf1, &buf2)
if _, err := io.Copy(w, r); err != nil {
log.Fatal(err)
}
fmt.Print(buf1.String())
fmt.Print(buf2.String())
}
Вывод:
some io.Reader stream to be read
some io.Reader stream to be read
Читайте также:
- Пакет io в Golang, функции копирования
- Пакет io в Golang, ошибки
- Пакет io в Golang, функция Pipe
- Пакет io в Golang, функции чтения
- Как использовать интерфейс io.Writer в Golang
Комментариев нет:
Отправить комментарий