Golang 将字符串转换为 io.Writer?
Golang Convert String to io.Writer?
是否可以在 Golang 中将 string
类型转换为 io.Writer
类型?
我将在 fmt.Fprintf()
中使用此字符串,但我无法转换类型。
您不能写入 string
,string
Go 中的内容是不可变的。
最好的选择是 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())
}
是否可以在 Golang 中将 string
类型转换为 io.Writer
类型?
我将在 fmt.Fprintf()
中使用此字符串,但我无法转换类型。
您不能写入 string
,string
Go 中的内容是不可变的。
最好的选择是 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())
}