Documentation
¶
Overview ¶
Package cursor provides a Go implementation of Rust's Cursor.
Example ¶
package main
import (
"fmt"
"io"
"github.com/FedericoSchonborn/cursor"
)
func main() {
writeTenBytesAtEnd := func(ws io.WriteSeeker) error {
if _, err := ws.Seek(-10, io.SeekEnd); err != nil {
return err
}
if _, err := ws.Write([]byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}); err != nil {
return err
}
return nil
}
buf := cursor.New(make([]byte, 15))
if err := writeTenBytesAtEnd(buf); err != nil {
panic(err)
}
fmt.Println(buf.Bytes()[5:15])
}
Output: [0 1 2 3 4 5 6 7 8 9]
Index ¶
- type Cursor
- func (c *Cursor) Bytes() []byte
- func (c *Cursor) Clone() *Cursor
- func (c *Cursor) Position() int
- func (c *Cursor) Read(p []byte) (n int, err error)
- func (c *Cursor) Seek(offset int64, whence int) (int64, error)
- func (c *Cursor) SetPosition(pos int)
- func (c *Cursor) Unwrap() []byte
- func (c *Cursor) Write(p []byte) (n int, err error)
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Cursor ¶
type Cursor struct {
// contains filtered or unexported fields
}
Cursor wraps a byte slice and provides it with io.Reader, io.Writer and io.Seeker implementations.
func (*Cursor) Position ¶
Position returns the current position of this cursor.
Example ¶
package main
import (
"fmt"
"io"
"github.com/FedericoSchonborn/cursor"
)
func main() {
buf := cursor.New([]byte{1, 2, 3, 4, 5})
fmt.Println(buf.Position())
if _, err := buf.Seek(2, io.SeekCurrent); err != nil {
panic(err)
}
fmt.Println(buf.Position())
if _, err := buf.Seek(-1, io.SeekCurrent); err != nil {
panic(err)
}
fmt.Println(buf.Position())
}
Output: 0 2 1
func (*Cursor) SetPosition ¶
SetPosition sets the position of this cursor.
Example ¶
package main
import (
"fmt"
"github.com/FedericoSchonborn/cursor"
)
func main() {
buf := cursor.New([]byte{1, 2, 3, 4, 5})
fmt.Println(buf.Position())
buf.SetPosition(2)
fmt.Println(buf.Position())
buf.SetPosition(4)
fmt.Println(buf.Position())
}
Output: 0 2 4
Click to show internal directories.
Click to hide internal directories.