Iterando e copiando por meio de uma fatia no Go

Peguei isso com o código-fonte da biblioteca padrão. Eu modifiquei um pouco para torná-lo mais sucinto. Muito útil quando você deseja passar por uma fatia, mas não pode usar um buffer.

type buffer []byte

func
(buf *buffer) next(n int) (b buffer) {
b
= *buf
b
, *buf = b[:n], b[n:]
return
}

func main
() {

block
:= make([]byte, 10)
buf
:= buffer(block)

copy
(buf.next(5), "aaa")
copy
(buf.next(5), "bbb")

fmt
.Println(block) // [97 97 97 0 0 98 98 98 0 0]
}