Код IT Загрузка примера кода…

Go main.go
type Generator func() ([]byte, error)

func (g Generator) Read(p []byte) (n int, err error) {
    data, err := g()
    if err != nil {
        return 0, err
    }
    n = copy(p, data)
    return n, nil
}

// Использование:
gen := Generator(func() ([]byte, error) { return []byte("Hello"), nil })
io.Copy(os.Stdout, gen)
type Generator func() ([]byte, error)

func (g Generator) Read(p []byte) (n int, err error) {
    data, err := g()
    if err != nil {
        return 0, err
    }
    n = copy(p, data)
    return n, nil
}

// Использование:
gen := Generator(func() ([]byte, error) { return []byte("Hello"), nil })
io.Copy(os.Stdout, gen)