是否可以将 string
转换为 io.Writer
类型?
我将在 fmt.Fprintf()
中使用这个字符串,但我无法转换类型。
原文由 Ari Seyhun 发布,翻译遵循 CC BY-SA 4.0 许可协议
是否可以将 string
转换为 io.Writer
类型?
我将在 fmt.Fprintf()
中使用这个字符串,但我无法转换类型。
原文由 Ari Seyhun 发布,翻译遵循 CC BY-SA 4.0 许可协议
我看到另一个答案提到 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
原文由 Zombo 发布,翻译遵循 CC BY-SA 4.0 许可协议
7 回答5.3k 阅读
6 回答6.9k 阅读✓ 已解决
4 回答2.3k 阅读
1 回答2k 阅读✓ 已解决
1 回答3.4k 阅读
2 回答2.2k 阅读
1 回答2.1k 阅读
你不能写入
string
,string
在 Go 中是不可变的。最好的选择是
bytes.Buffer
并且从 Go 1.10 开始更快strings.Builder
类型:他们实现io.Writer
类型:他们实现 --- astring
withBuffer.String()
andBuilder.String()
, or as a byte slice withBuffer.Bytes()
.如果您使用
bytes.NewBufferString()
创建缓冲区,您还可以将string
作为缓冲区的初始内容:输出(在 Go Playground 上尝试):
If you want to append a variable of type
string
(or any value ofstring
type), you can simply useBuffer.WriteString()
(orBuilder.WriteString()
):或者:
另请注意,如果您只想连接 2
string
s,则无需创建缓冲区并使用fmt.Fprintf()
,只需使用+
运算符连接它们:另请参阅: Golang:格式化字符串而不打印?
它可能也很有趣: ResponseWriter.Write 和 io.WriteString 之间有什么区别?