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

%s 和 %S 之间的差异

%s 和 %S 之间的差异

Go
哈士奇WWW 2022-06-13 16:33:48
我最近在学习围棋。这是关于 Go 指针的事情。这是代码:var house = "Malibu Point 10880, 90265"ptr := &housefmt.Printf("ptr type: %T \n", ptr)fmt.Printf("address: %p \n", ptr)value := *ptrfmt.Printf("value type: %T \n", value)fmt.Printf("value: %S\n", value)fmt.Printf("value: %s\n", value)本教程被编码为第 3 行,%s但%S它给出了这个奇怪的结果:ptr type: *stringaddress: 0xc000010200value type: stringvalue: %!S(string=Malibu Point 10880, 90265)value: Malibu Point 10880, 90265应该是这个%s指针的字符串值,但是是什么%S意思呢?
查看完整描述

1 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

%S不是有效的 fmt 动词。你得到的输出相当于%p. 没什么特别的%S。这似乎发生在任何无法识别的动词上。


fmt.Printf("value: %p\n", value)

fmt.Printf("value: %S\n", value)

fmt.Printf("value: %L\n", value)

fmt.Printf("value: %A\n", value)


value: %!p(string=Malibu Point 10880, 90265)

value: %!S(string=Malibu Point 10880, 90265)

value: %!L(string=Malibu Point 10880, 90265)

value: %!A(string=Malibu Point 10880, 90265)

当您给出错误的 fmt 动词时badVerb,会调用此行为。它记录在docs的“格式错误”中。fmt


格式错误:


如果为动词提供了无效参数,例如向 %d 提供字符串,则生成的字符串将包含问题描述,如以下示例所示:


错误类型或未知动词:%!verb(type=value)


查看完整回答
反对 回复 2022-06-13
  • 1 回答
  • 0 关注
  • 228 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号