学习Golang中的Printf方法

151 阅读3分钟

学习Golang中的Printf

Printf方法

来自fmt包的Printf方法将一个格式化的字符串写到标准输出。

Printf 它使插值字符串成为可能。这是通过在字符串中留下占位符,并使用数值来填充这些占位符来实现的。

Printf语法

Printf 接受一个字符串参数,可能带有格式化占位符,以及零个或多个值参数。例如:

package main

import (
  "fmt"
)

func main() {
  answer := "C"
  fmt.Printf("Is %v your final answer?", answer)
}

打印出来:

Is C your final answer?

请记住,像PrintPrintf ,不会自动添加换行符。

第一个参数的%v 部分是 "值 "的占位符。

多个占位符

"格式指定器",即第一个参数可以包含任意数量的占位符。这样一来,就可以用一条语句打印出多个值。这是PrintfPrint 更加出色的一个使用案例。如果用Print 来实现同样的事情,就需要好几条语句。此外,Print 不支持任何格式化,除了其参数的默认字符串表示法。

例如:

package main

import (
  "fmt"
)

func main() {
  const name, age, pronoun, profession = "Kim", 22, "She", "woodworker"
  fmt.Printf("%s is %d years old.\n", name, age)
  fmt.Printf("%s is a %s.\n", pronoun, profession)
}

打印出来:

Kim is 22 years old.
She is a woodworker.

在每一行后面都打印了一个换行符,因为它被明确地包含在格式指定符中。

请注意,使用的占位符是%s (表示字符串)和%d (表示十进制,即基数为10的整数)。

动词

格式指定器中的占位符被称为 "动词"。要查看支持的格式动词的完整列表,请参阅fmt包的文档

这些是一些最常见的动词:

动词意思是
%v默认格式的值
%+v结构的默认表示方法,带有字段名。
%#v该值的Go-syntax表示法
%T值的类型的语法表示。
%d一个以十进制(基数为10)表示的整数值。
%E科学符号,例如:-1.234456E+78
%f小数点,但没有指数,例如:123.456
%s一个字符串或片断(不解释字节)。
%q一个双引号的字符串,用Go语法安全转义。

要打印一个字面的% (百分数)符号,要像这样转义:%%

宽度和精度

每个格式化数值的宽度可以通过紧挨着动词的一个可选的十进制数字来指定。

精度可以在宽度(可选)之后用一个句号和一个小数来指定。

这个例子显示了这些修饰语的一些常见用途:

 package main

import (
  "fmt"
)

func main() {
  const s, n = "Pi", 3.1415926535
  fmt.Printf("'%v'='%v'\n", s, n)
  fmt.Printf("'%s'='%f'\n", s, n)
  fmt.Printf("'%10s'='%1.4f'\n", s, n)
  fmt.Printf("'%-10s'='%1.1f'\n", s, n)
}

这就是输出:

'Pi'='3.1415926535'
'Pi'='3.141593'
'        Pi'='3.1416'
'Pi        '='3.1'

请注意,在上面的例子中,单引号(')只是普通的字符,以帮助可视化每个格式化值的开始和结束。它们对Printf 方法没有特殊意义。

还有更多的特殊情况和标志,不适合写成一篇介绍性文章。该软件包的文档是一个很好的地方,可以找出所有的可能性。