在本文中,我们将向您展示如何在 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
(adsbygoogle = window.adsbygoogle || []).push({});