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.