- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
与使用 +
添加字符串相比,我真的不明白使用 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/
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 5 年前。 Improve
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 6 年前。 Improv
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 4年前关闭。 Improve this qu
我已经通过此链接安装了 phabricator 扩展 Sprint https://github.com/wikimedia/phabricator-extensions-Sprint用于在 phab
冒着被告知不要询问在哪里可以找到特定程序的风险,我正在询问在哪里可以找到特定程序。我需要在 LWUIT 中开发一个应用程序(是的,旧技术,我很清楚)。有谁知道在哪里可以找到 Sprint Wirele
mongodb是最早热门非关系数据库的之一,使用也比较普遍,一般会用做离线数据分析来使用,放到内网的居多。由于很多公司使用了云服务,服务器默认都开放了外网地址,导致前一阵子大批 MongoDB 因配
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 3年前关闭。 Improve t
我有以下过滤器来查找当前 Sprint 中的问题: resolution is EMPTY AND assignee = currentUser() AND Sprint in openSprints
我可以为我团队的 TFS 当前 Sprint 任务板添加书签吗?我们有两周的冲刺,因此 URL 每两周更改一次。 默认 URL 的形式为: http://[Server]/tfs/[Project]/
在 JIRA v7.0.10 中 当我在积压工作屏幕上时,即使我切换它们,我也可以看到已开始的冲刺的估计故事点。 (绿色圆圈)但我们也有一些计划的冲刺,当切换给定的冲刺时,故事点不可见。 (红色圆圈)
当从基本流程中分支出来时,任务项会显示在冲刺板上。但是,错误项目(及其子任务)不会显示其父错误。见下文: 任务应该显示其父任务。事实上,如果我从板上编辑错误,我可以在板上看到它。见下文: 不幸的是,刷
我想知道为什么 :sprint 在这种情况下报告 xs = _: Prelude> xs = map (+1) [1..10] Prelude> length xs 10 Prelude> :spri
当从基本流程中分支出来时,任务项会显示在冲刺板上。但是,错误项目(及其子任务)不会显示其父错误。见下文: 任务应该显示其父任务。事实上,如果我从板上编辑错误,我可以在板上看到它。见下文: 不幸的是,刷
这样写比较好 Mono.just (someVariable) .filter (somVariable doSomeStuff (v)) .switchIfEmpty
当我想使用 sprintf 函数时,char 数组(缓冲区)的适当大小是多少? 如果缓冲区只能容纳 1 个字符,我不知道为什么这部分代码可以工作?我在里面放了比 1 个多得多的字符。 /* sprin
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
与使用 + 添加字符串相比,我真的不明白使用 fmt.Sprint 有什么好处。这是两者都在使用的示例: func main() { myString := fmt.Sprint("Hello
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 3年前关闭。 Improve thi
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 3年前关闭。 Improve thi
我是 Azure DevOps 新手(之前使用过 JIRA),我不明白如何向 Sprint 添加任务、问题和错误。 我选择的流程是敏捷。 最佳答案 欢迎来到 AzureDevOps 您需要创建并定义
我是一名优秀的程序员,十分优秀!