È possibile convertire un string
in un tipo io.Writer
in Golang?Golang Converti stringa in io.Writer?
Utilizzerò questa stringa in fmt.Fprintf()
ma non riesco a convertire il tipo.
È possibile convertire un string
in un tipo io.Writer
in Golang?Golang Converti stringa in io.Writer?
Utilizzerò questa stringa in fmt.Fprintf()
ma non riesco a convertire il tipo.
Non è possibile scrivere in un string
, string
in Go non modificabile.
L'alternativa migliore è il tipo bytes.Buffer
: implementa io.Writer
modo da poter scrivere in esso, e si può ottenere il suo contenuto come string
con Buffer.String()
o come una fetta di byte con Buffer.Bytes()
.
si può anche avere un string
come contenuto iniziale del buffer se si crea il buffer con bytes.NewBufferString()
:
s := "Hello"
buf := bytes.NewBufferString(s)
fmt.Fprint(buf, ", World!")
fmt.Println(buf.String())
uscita (provate sul Go Playground):
Hello, World!
Se desidera aggiungere una variabile di tipo , è sufficiente utilizzare Buffer.WriteString()
:
s2 := "to be appended"
buf.WriteString(s2)
Oppure:
fmt.Fprint(buf, s2)
Si noti inoltre che se si vuole solo concatenare 2 string
s, non è necessario creare un buffer e utilizzare fmt.Fprintf()
, si può semplicemente utilizzare l'operatore +
per concatenare loro:
s := "Hello"
s2 := ", World!"
s3 := s + s2 // "Hello, World!"
vedi anche: Golang: format a string without printing?
Potresti darmi un esempio di come potrei usare una variabile con un tipo di stringa nella funzione fmt.Fprintf() per favore. :) – Acidic
Perché non usano fmt.Sprintf()? – Uvelichitel