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?