0
点赞
收藏
分享

微信扫一扫

%!(NOVERB) 是个什么鬼?

什么情况下会产生?

var hourPaidSuccessFenzi = decimal.NewFromFloat(10)
var	alertName = fmt.Sprintf("支付成功率报警,汇总支付成功率低于%s%", hourPaidSuccessFenzi.String()),
fmt.Println(alertName)

运行结果就会成为:

支付成功率报警,汇总支付成功率低于10%!(NOVERB)

为啥会这样呢?

是因为% 是字符串参与转义的标志符,如 %s, %v, %d等。。。

 %!(NOVERB) 的出现是GO语言的一种安全转义机制,怎样避免这样的情况?

// 用双百分号 %% 代替无意义的单百分 % 如:
var hourPaidSuccessFenzi = decimal.NewFromFloat(10)
var	alertName = fmt.Sprintf("支付成功率报警,汇总支付成功率低于%s%%", hourPaidSuccessFenzi.String()),
fmt.Println(alertName)

最终运行结果为:

支付成功率报警,汇总支付成功率低于10%

举报

相关推荐

0 条评论