Example: How to use ReadAtLeast from IO Package in Golang?
ReadAtLeast reads from r into buf until it has read at least min bytes. It returns specific errors to signal specific cases when the minimum couldn’t be read due to EOF.
Example
package main
import (
"io"
"fmt"
"strings"
)
type Example struct {
ReaderLength int
Minimum int
TextStr string
}
func main() {
examples := []Example{
{10, 5, "Go is a programming language created at Google in 2007."},
{10, 10, "Golang"},
{10, 00, "Robert Griesemer"},
{10, 15, "Jobs, Code, Videos and News for Go hackers."},
}
for _, ex := range examples {
rd := strings.NewReader(ex.TextStr)
buffer := make([]byte, ex.ReaderLength)
bytesRead, err := io.ReadAtLeast(rd, buffer, ex.Minimum)
fmt.Printf("\nLen(buffer)=%d, Min=%d, BytesRead=%d, Error=%v, (%s)\n",ex.ReaderLength, ex.Minimum, bytesRead, err, ex.TextStr)
}
}
Output
Len(buffer)=10, Min=5, BytesRead=10, Error=, (Go is a programming language created at Google in 2007.)
Len(buffer)=10, Min=10, BytesRead=6, Error=unexpected EOF, (Golang)
Len(buffer)=10, Min=0, BytesRead=0, Error=, (Robert Griesemer)
Len(buffer)=10, Min=15, BytesRead=0, Error=short buffer, (Jobs, Code, Videos and News for Go hackers.)