Golang 将字符串转换为 io.Writer?

Golang Convert String to io.Writer?

是否可以在 Golang 中将 string 类型转换为 io.Writer 类型?

我将在 fmt.Fprintf() 中使用此字符串,但我无法转换类型。

您不能写入 stringstringGo 中的内容是不可变的。

最好的选择是 bytes.Buffer and since Go 1.10 the faster strings.Builder types: they implement io.Writer so you can write into them, and you can obtain their content as a string with Buffer.String() and Builder.String(), or as a byte slice with 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() (or Builder.WriteString():

s2 := "to be appended"
buf.WriteString(s2)

或:

fmt.Fprint(buf, s2)

另请注意,如果您只想连接2个string,则无需创建缓冲区并使用fmt.Fprintf(),只需使用+运算符即可连接它们:

s := "Hello"
s2 := ", World!"

s3 := s + s2  // "Hello, World!"

另见:Golang: format a string without printing?

也可能感兴趣:

使用实现 Write() 方法的 bytes.Buffer

import "bytes"

writer := bytes.NewBufferString("your string")

我看到另一个答案提到了strings.Builder,但是我没有看到例子。所以给你:

package main

import (
   "fmt"
   "strings"
)

func main() {
   b := new(strings.Builder)
   fmt.Fprint(b, "south north")
   println(b.String())
}

https://golang.org/pkg/strings#Builder