猿问

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

是否可以将 a 转换为Golang 中stringio.Writer类型?

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


qq_花开花谢_0
浏览 864回答 3
3回答

扬帆大鱼

你不能写入 a string,stringGo 中的 s 是不可变的。最好的选择是bytes.Buffer和自走1.10较快的strings.Builder类型:他们实施io.Writer这样你就可以写放进去,你可以得到他们的内容作为string与Buffer.String()和Builder.String(),或作为与字节片Buffer.Bytes()。string如果您使用以下命令创建缓冲区,您还可以将 a作为缓冲区的初始内容bytes.NewBufferString():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 strings,则不需要创建缓冲区并使用fmt.Fprintf(),您只需使用+运算符将它们连接起来即可:s := "Hello"s2 := ", World!"s3 := s + s2  // "Hello, World!"

蛊毒传说

我看到另一个答案提到strings.Builder,但我没有看到一个例子。所以给你:package mainimport (   "fmt"   "strings")func main() {   b := new(strings.Builder)   fmt.Fprint(b, "south north")   println(b.String())}https://golang.org/pkg/strings#Builder

侃侃无极

使用bytes.Buffer实现Write()方法。import "bytes"writer := bytes.NewBufferString("your string")
随时随地看视频慕课网APP

相关分类

Go
我要回答