string - Golang Convertir cadena a io.Writer?
(1)
¿Es posible convertir una string
a un tipo io.Writer en Golang?
fmt.Fprintf()
esta cadena en fmt.Fprintf()
pero no puedo convertir el tipo.
No puedes escribir en una string
, las string
en Go son inmutables.
Las mejores alternativas son los bytes.Buffer
y, desde Go 1.10, las strings.Builder
más strings.Builder
Tipos de strings.Builder
: implementan io.Writer
para que pueda escribir en ellas, y puede obtener su contenido como una string
con Buffer.String()
y Buffer.String()
Builder.String()
, o como un segmento de bytes con Buffer.Bytes()
.
También puede tener una string
como contenido inicial del búfer si crea el búfer con bytes.NewBufferString()
:
s := "Hello"
buf := bytes.NewBufferString(s)
fmt.Fprint(buf, ", World!")
fmt.Println(buf.String())
Salida (pruébalo en el Go Playground ):
Hello, World!
Si desea agregar una variable de tipo string
(o cualquier valor de tipo de string
), simplemente puede usar Buffer.WriteString()
(o Builder.WriteString()
):
s2 := "to be appended"
buf.WriteString(s2)
O:
fmt.Fprint(buf, s2)
También tenga en cuenta que si solo desea concatenar 2 string
s, no necesita crear un búfer y usar fmt.Fprintf()
, simplemente puede usar el operador +
para concatenarlos:
s := "Hello"
s2 := ", World!"
s3 := s + s2 // "Hello, World!"
Ver también: Golang: ¿formatear una cadena sin imprimir?
También puede ser interesante: ¿cuál es la diferencia entre ResponseWriter.Write y io.WriteString?