Golang中如何在fmt.Printf中打印`%`符号
Golang中如何在fmt.Printf中打印%符号
我有以下代码:
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello, playground")
h := 5
r := 3
fmt.Printf("\n%v / %v = %v ", h, r, h/r)
fmt.Printf("\n%v % %v = %v ", h, r, h%r)
}
但输出是:
Hello, playground
5 / 3 = 1
5 %v = 3 %!(EXTRA int=2)
第一行没问题,但第二行不对,因为它没有转义 % 符号。我该如何修复它?
更多关于Golang中如何在fmt.Printf中打印`%`符号的实战教程也可以访问 https://www.itying.com/category-94-b0.html
4 回复
根据 fmt 包 的文档:
%% 一个百分号字面量;不消耗任何值
如何修复它,只需修改行
新 => fmt.Printf("\n%v %% %v = %v ", h, r, h%r)
而不是
旧 => fmt.Printf("\n%v % %v = %v ", h, r, h%r)
fmt.Printf("\n%v %% %v = %v ", h, r, h%r)
在Go语言的fmt.Printf中,要打印字面量的%符号,需要使用双百分号%%进行转义。
以下是修复后的代码:
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello, playground")
h := 5
r := 3
fmt.Printf("\n%v / %v = %v ", h, r, h/r)
fmt.Printf("\n%v %% %v = %v ", h, r, h%r)
}
输出结果:
Hello, playground
5 / 3 = 1
5 % 3 = 2
解释:
%%会被解析为单个%字符输出- 在格式字符串中,
%是格式说明符的起始字符,所以当需要打印字面量的%时,必须使用%%进行转义 - 其他需要转义的情况也类似,比如要打印
\需要使用\\
更多示例:
package main
import "fmt"
func main() {
// 打印百分比
fmt.Printf("完成进度: %d%%\n", 75) // 输出: 完成进度: 75%
// 在复杂格式中使用
fmt.Printf("折扣: %.1f%% off\n", 25.5) // 输出: 折扣: 25.5% off
// 多个百分号
fmt.Printf("%%s 格式符用于字符串: %%s\n") // 输出: %s 格式符用于字符串: %s
}

