Golangでstring
を_io.Writer
_型に変換できますか?
fmt.Fprintf()
でこの文字列を使用しますが、型を変換できません。
Goのstring
に書き込むことはできません。string
は不変です。
最適な代替手段は bytes.Buffer
であり、Go 1.10以降ではより高速な strings.Builder
タイプです。これらは実装します io.Writer
=したがって、それらに書き込むことができ、その内容をstring
として Buffer.String()
および Builder.String()
として、または Buffer.Bytes()
のバイトスライス。
bytes.NewBufferString()
でバッファを作成する場合、string
をバッファの初期コンテンツとして使用することもできます。
s := "Hello"
buf := bytes.NewBufferString(s)
fmt.Fprint(buf, ", World!")
fmt.Println(buf.String())
出力( Go Playground で試してください):
Hello, World!
タイプstring
(またはstring
タイプの任意の値)の変数を追加する場合は、単に Buffer.WriteString()
(または Builder.WriteString()
):
s2 := "to be appended"
buf.WriteString(s2)
または:
fmt.Fprint(buf, s2)
また、2つのstring
sを連結するだけの場合、バッファを作成して fmt.Fprintf()
を使用する必要はなく、単に+
を使用できます。それらを連結する演算子:
s := "Hello"
s2 := ", World!"
s3 := s + s2 // "Hello, World!"
次も参照してください: Golang:印刷せずに文字列をフォーマットしますか?
興味深いかもしれません: ResponseWriter.Writeとio.WriteStringの違いは何ですか?