mirror of https://github.com/siddontang/go.git
29 lines
383 B
Go
29 lines
383 B
Go
|
package arena
|
||
|
|
||
|
type Arena struct {
|
||
|
buf []byte
|
||
|
|
||
|
size int
|
||
|
}
|
||
|
|
||
|
func NewArena(size int) *Arena {
|
||
|
a := new(Arena)
|
||
|
|
||
|
a.size = size
|
||
|
a.buf = make([]byte, size, size)
|
||
|
|
||
|
return a
|
||
|
}
|
||
|
|
||
|
func (a *Arena) Make(size int) []byte {
|
||
|
if a.size < size {
|
||
|
return make([]byte, size)
|
||
|
} else if len(a.buf) < size {
|
||
|
a.buf = make([]byte, a.size)
|
||
|
}
|
||
|
|
||
|
b := a.buf[0:size]
|
||
|
a.buf = a.buf[size:]
|
||
|
return b
|
||
|
}
|