为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
qq_花开花谢_0 2021-12-27 18:13:46
是否可以将 a 转换为Golang 中string的io.Writer类型?我将使用这个字符串,fmt.Fprintf()但我无法转换类型。
查看完整描述

3 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

你不能写入 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!"


查看完整回答
反对 回复 2021-12-27
?
蛊毒传说

TA贡献1895条经验 获得超3个赞

我看到另一个答案提到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


查看完整回答
反对 回复 2021-12-27
?
侃侃无极

TA贡献2051条经验 获得超10个赞

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


import "bytes"


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


查看完整回答
反对 回复 2021-12-27
  • 3 回答
  • 0 关注
  • 863 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信