string go writer

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?