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

为什么 Go 中的 fmt.Println 打印动词 %s 文字而不是值?

为什么 Go 中的 fmt.Println 打印动词 %s 文字而不是值?

Go
眼眸繁星 2021-11-22 14:54:21
考虑,package mainimport "fmt"func main() {  name := "johnny"  fmt.Println("Hello world %s\n", name)}打印出来,你好世界%s 约翰尼为什么我得到 %s 而不是这个,package mainimport "fmt"func main() {  name := "johnny"  fmt.Printf("Hello world %s\n", name)}哪个打印 Hello world johnny?我试图从文档中找出答案,如果格式(对于 Println 等隐式为 %v)对字符串有效(%s %q %v %x %X),则以下两条规则适用:如果操作数实现了错误接口,则将调用 Error 方法将对象转换为字符串,然后根据动词(如果有)的要求对其进行格式化。如果操作数实现方法 String() string,则将调用该方法将对象转换为字符串,然后将根据动词(如果有)的要求对其进行格式化。但是我无法理解这是否影响了我的程序。
查看完整描述

2 回答

?
慕哥6287543

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

fPrintf是“格式化”。这就是%?动词可以做任何事情的原因,因为函数是为解析它们而构建的。Println没有这种格式。

格式不像某些语言那样是字符串的属性(也许你和我一样,来自 Python?)


查看完整回答
反对 回复 2021-11-22
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

Println只打印字符串并向其附加换行符。Printf是“打印格式”的缩写,基于 C 库,这是格式说明符等约定的来源。

简单的答案是它的设计。如果你想使用格式说明符,你必须调用 format 方法。


查看完整回答
反对 回复 2021-11-22
  • 2 回答
  • 0 关注
  • 177 浏览
慕课专栏
更多

添加回答

举报

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