gpt4 book ai didi

go - 为什么要使用 fmt.Sprint?

转载 作者:IT王子 更新时间:2023-10-29 01:11:16 29 4
gpt4 key购买 nike

与使用 + 添加字符串相比,我真的不明白使用 fmt.Sprint 有什么好处。这是两者都在使用的示例:

func main() {
myString := fmt.Sprint("Hello", "world")
fmt.Println(myString)
}

func main() {
myString := "Hello " + "World"
fmt.Println(myString)
}

各自的区别和优势是什么?

最佳答案

在你的例子中没有真正的区别,因为你是 Sprintf 来简单地连接字符串。这确实是可以通过使用“+”运算符更容易解决的问题。

以下面的示例为例,您想要打印一条清晰的错误消息,例如“找不到 ID 为‘42’的产品。”。你的底部方法看起来如何?

productID := 42;
myString := "Product with ID '" + productID + "' could not be found."

这会报错(string 和 int 类型不匹配),因为 Go 不支持将不同的类型连接在一起。

因此您必须先将类型转换为字符串。

productID := 42
myString := "Product with ID '" + strconv.Itoa(productID) + "' could not be found."

而且,除了字符串之外,您必须对每种数据类型都执行此操作。

Go 中的 fmt 包和几乎所有其他语言中的类似格式化包通过帮助您进行转换并使您的字符串远离大量 '+' 运算符来解决这个问题。

这是使用 fmt

示例的样子
product := 42
myString := fmt.Sprintf("Product with ID '%d' could not be found.", product)

此处 %d 是“将参数打印为数字”的格式化动词。参见 https://golang.org/pkg/fmt/#hdr-Printing打印其他类型的各种其他方式。

与连接 fmt 相比,您可以清晰地编写字符串,将模板/文本与变量分开。而且,它大大简化了字符串以外的数据类型的打印。

关于go - 为什么要使用 fmt.Sprint?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45203052/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com