Est-il possible de convertir un string
en un type io.Writer
Dans Golang?
J'utiliserai cette chaîne dans fmt.Fprintf()
mais je ne parviens pas à convertir le type.
Vous ne pouvez pas écrire dans un string
, string
s dans Go sont immuables.
Les meilleures alternatives sont les types bytes.Buffer
et depuis Go 1.10 les types strings.Builder
les plus rapides: ils implémentent io.Writer
pour que vous puissiez y écrire et obtenir leur contenu sous la forme d'un string
avec Buffer.String()
et Builder.String()
, ou sous forme d'une tranche d'octets avec Buffer.Bytes()
.
Vous pouvez également avoir un string
comme contenu initial du tampon si vous créez le tampon avec bytes.NewBufferString()
:
s := "Hello"
buf := bytes.NewBufferString(s)
fmt.Fprint(buf, ", World!")
fmt.Println(buf.String())
Sortie (essayez-le sur le Go Playground ):
Hello, World!
Si vous souhaitez ajouter une variable de type string
(ou toute valeur de type string
), vous pouvez simplement utiliser Buffer.WriteString()
(ou - Builder.WriteString()
):
s2 := "to be appended"
buf.WriteString(s2)
Ou:
fmt.Fprint(buf, s2)
Notez également que si vous souhaitez simplement concaténer 2 string
s, vous n'avez pas besoin de créer de tampon et d'utiliser fmt.Fprintf()
, vous pouvez simplement utiliser le +
Pour les concaténer:
s := "Hello"
s2 := ", World!"
s3 := s + s2 // "Hello, World!"
Voir aussi: Golang: formater une chaîne sans imprimer?
Cela peut également être intéressant: Quelle est la différence entre ResponseWriter.Write et io.WriteString?