在本文中,我们将向您展示如何在 Golang 中格式化字符串。Golang 有大量的字符串格式化选择,本文使用fmt包,该包可用于格式化字符串,我们主要使用以下函数:
- fmt.Printf
- fmt.Sprintf
- fmt.Fscanf
什么是 fmt 包
fmt包能够将字符串、数字甚至对象转换为特定的字符串格式。所有的格式化方法都是这个包的一部分。
格式化字符串参数
- d – 十进制整数
- o – 八进制整数
- O – 带有 0o 前缀的八进制整数
- b – 二进制整数
- x – 十六进制整数小写
- X – 十六进制整数大写
- f – 十进制浮点数,小写
- F – 十进制浮点数,大写
- e – 科学记数法(尾数/指数),小写
- E – 科学记数法(尾数/指数),大写
- g – %e 或 %f 的最短表示
- G – %E 或 %F 的最短表示
- c – 由相应的 Unicode 代码点表示的字符
- q – 带引号的字符
- U – Unicode 转义序列
- t – 真或假
- s – 一个字符串
- v – 默认格式
- #v – 值的 Go 语法表示
- T – 值类型的 Go 语法表示
- p——指针地址
- % – 转义%,两个 %% 打印出一个 %
Go 字符串格式示例
fmt包提供了多种字符串格式化功能。格式化方法将根据指定的格式说明符格式化字符串。让我们看一些 GoLang 中流行的字符串格式化示例。
使用 Printf() 格式化字符串
fmt.Printf ()方法将格式化的字符串打印到控制台。%s 需要一个字符串值和%d
一个整数值。
例子:
package main
import (
"fmt"
)
func main() {
emp_name := "Rachel"
age := 17
salary := 123
homepage := "https://www.02405.com"
fmt.Printf("My name is %s, and I am %d years old. My annual wage is %d dollars. My homepage url is '%s'\n", emp_name, age, salary, homepage)
}
输出 :
My name is Rachel, and I am 17 years old. My annual wage is 123 dollars. My homepage url is 'https://www.02405.com'
使用 Sprintf() 格式化字符串
该fmt.Sprintf
函数将字符串格式化为变量。
例子:
package main
import (
"fmt"
)
func main() {
emp_name := "Rachel"
age := 17
salary := 123
homepage := "https://www.02405.com"
formatted_str := fmt.Sprintf("My name is %s, and I am %d years old. My annual wage is %d dollars. My homepage url is '%s'\n", emp_name, age, salary, homepage)
fmt.Println(formatted_str)
}
输出 :
My name is Rachel, and I am 17 years old. My annual wage is 123 dollars. My homepage url is 'https://www.02405.com'
使用 Fscanf() 方法格式化字符串
Go 语言的fmt.Fscanf()
方法扫描提供的文本,从 r 读取,然后根据格式将空格分隔的值存储到后续参数中。
语法:
func Fscanf(r io.Reader, format string, a …interface{}) (n int, err error)
它返回成功解析的项目数。上面的函数接受三个参数:
- r io.Reader : 扫描的指定文本存储在此参数中。
- format string:此选项指定应接收元素的各种格式。
- a …interface:这是为每个元素指定的变量。
例子:
package main
import (
"fmt"
"os"
"strings"
)
func main() {
var (
emp_name string
url string
salary int
)
r := strings.NewReader("零五网 https://www.02405.com 100")
emp, err := fmt.Fscanf(r, "%s %s %d", &emp_name, &url, &salary)
if err != nil {
fmt.Fprintf(os.Stderr, "Fscanf: %v\n", err)
}
fmt.Println(emp_name, url, salary)
fmt.Println(emp)
}
输出 :
零五网 https://www.02405.com 100 3