It
- wraps almost only syscalls and uses only Go standard types;
- exposes standard interfaces; plays well with standard packages like io, bufio, etc.
- does not handle memory management (allocating/destructing slice). It's up to user to decide whether/how to reuse buffers.