Go语言标准库之fmt包的深度使用 - 详细指南

silverwq
2022-07-25 / 0 评论 / 226 阅读 / 正在检测是否收录...

概述

fmt 包实现了类似 C 语言 printf 和 scanf 的格式化。
主要分为两个部分:

  1. 向外输出内容
  2. 获取输入内容

向外输出

Print 系列函数

功能:将内容输出到系统的标准输出
主要有以下三个:

  1. Print 函数直接输出内容
  2. Printf 函数支持格式化输出字符串
  3. Println 函数会在输出内容的结尾添加一个换行符
func main() {
    fmt.Print("在终端打印该信息。")

    name := "沙河小王子"
    fmt.Printf("我是:%s\n", name)

    fmt.Println("在终端打印单独一行显示")
}

Fprint 系列函数

主要功能:

  1. 将内容输出到一个 io.Writer 接口类型的变量 w 中,只要满足 io.Writer 接口的类型都支持写入
  2. 我们通常用这个函数往文件中写入内容

和 Print 的一样,也有三个函数:

  1. Fprint
  2. Fprintf
  3. Fprintln
func main() {
    // 向标准输出写入内容
    fmt.Fprintln(os.Stdout, "向标准输出写入内容")

    // 向打开的文件句柄中写入内容
    fileObj, err := os.OpenFile("./xx.txt", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
    if err != nil {
        fmt.Println("打开文件出错,err:", err)
        return
    }
    name := "沙河小王子"
    fmt.Fprintf(fileObj, "往文件中写如信息:%s", name)
}

Sprint 系列函数

主要功能:

  1. 把传入的数据生成并返回一个字符串
  2. 也就说,返回一个格式化的字符串给变量

三个函数:

  1. Sprint
  2. Sprintf
  3. Sprintln
func main() {
    s1 := fmt.Sprint("沙河小王子")

    name := "沙河小王子"
    age := 18
    s2 := fmt.Sprintf("name:%s,age:%d", name, age)

    s3 := fmt.Sprintln("沙河小王子")

    // 沙河小王子 name:沙河小王子,age:18 沙河小王子
    fmt.Println(s1, s2, s3)
}

格式化占位符

*printf 系列函数都支持 format 格式化参数

  1. %v,值的默认格式表示
  2. %+v,类似 %v,但输出结构体时会添加字段名
  3. %#v,值的 Go 语法表示
  4. %T,打印值的类型
  5. %%,百分号
0

评论 (0)

取消