¿Cómo se borra una porción en Go?

¿Cuál es la forma adecuada de borrar una porción en Go?

Esto es lo que he encontrado en elir a los foros:

// test.go
package main

import (
    "fmt"
)

func main() {
    letters := []string{"a", "b", "c", "d"}
    fmt.Println(cap(letters))
    fmt.Println(len(letters))
    // clear the slice
    letters = letters[:0]
    fmt.Println(cap(letters))
    fmt.Println(len(letters))
}

¿Es esto correcto?

Para aclarar, el búfer se borra por lo que puede ser reutilizado.

Un ejemplo esBuffer.Truncate Funciona en el paquete de bytes.

Observe que Restablecer solo llama Truncar (0). Así que parece que en este caso la línea 70 evaluaría: b.buf = b.buf [0: 0]

http://golang.org/src/pkg/bytes/buffer.go

// Truncate discards all but the first n unread bytes from the buffer.
60  // It panics if n is negative or greater than the length of the buffer.
61  func (b *Buffer) Truncate(n int) {
62      b.lastRead = opInvalid
63      switch {
64      case n < 0 || n > b.Len():
65          panic("bytes.Buffer: truncation out of range")
66      case n == 0:
67          // Reuse buffer space.
68          b.off = 0
69      }
70      b.buf = b.buf[0 : b.off+n]
71  }
72  
73  // Reset resets the buffer so it has no content.
74  // b.Reset() is the same as b.Truncate(0).
75  func (b *Buffer) Reset() { b.Truncate(0) }

Respuestas a la pregunta(3)

Su respuesta a la pregunta