«

Golang fmt标准库

时间:2025-1-10 19:45     作者:杨佳乐     分类: Golang


package main

import "fmt"
import "time"

type User struct {
    Name  string
    Email string
    Age   int
}

func main(){

    // fmt包介绍

    // fmt 是一个用于格式化 I/O 的标准库包,提供了格式化字符串输出和输入的功能。
    // fmt 包广泛用于打印日志、调试信息以及格式化字符串等场景

    // 核心功能分类
    //  格式化输出函数

    //  Print 系列:直接输出到标准输出。
    //  Fprint 系列:输出到指定的 io.Writer。
    //  Sprint 系列:将结果作为字符串返回。
    //  格式化输入函数

    //  Scan 系列:从标准输入读取数据。
    //  Fscan 系列:从指定的 io.Reader 读取数据。
    //  Sscan 系列:从字符串中解析数据。
    //  格式化字符串

    //  使用格式化占位符实现自定义输出。

    // 输出函数
    // fmt.Print    直接输出内容,不自动换行。
    // fmt.Println  输出内容,并在结尾自动换行。
    // fmt.Printf   支持格式化输出,需提供格式化字符串(如 %d, %s)。
    // fmt.Sprint   格式化内容并返回字符串,不输出。
    // fmt.Sprintln 格式化内容,添加换行符后返回字符串。
    // fmt.Sprintf  格式化内容并返回字符串,不输出。

    name := "Alice"
    age := 30
    fmt.Print("Hello, ") // 不换行
    fmt.Println("world!") // 换行
    fmt.Printf("My name is %s and I am %d years old.\n", name, age)

    result := fmt.Sprintf("Name: %s, Age: %d", name, age) // 返回字符串
    fmt.Println(result)

    // 输出复杂数据
    user := User{Name: "Alice", Email: "alice@example.com", Age: 30}
    fmt.Printf("Default: %v\n", user)
    fmt.Printf("With field names: %+v\n", user)
    fmt.Printf("Go syntax: %#v\n", user)

    // 输出时间
    fmt.Printf("Current time: %s\n", time.Now().Format("2006-01-02 15:04:05"))

    // 输入函数
    // fmt.Scan 从标准输入读取值,并赋值给提供的变量。
    // fmt.Scanln   类似 Scan,但要求输入换行结束。
    // fmt.Scanf    从标准输入按格式化字符串读取值。
    // fmt.Fscan    从 io.Reader 中读取值,并赋值给提供的变量。
    // fmt.Sscan    从字符串中解析值,并赋值给提供的变量。

    var name1 string
    var age1 int
    fmt.Println("Enter your name and age:")
    fmt.Scanln(&name1, &age1) // 从标准输入读取数据
    fmt.Printf("Hello %s, you are %d years old.\n", name1, age1)

    // 通用占位符
    // %v   默认格式输出变量的值。
    // %+v  输出结构体时,会包含字段名和值。
    // %#v  输出变量的 Go 语法表示形式。
    // %T   输出变量的类型。
    // %%   输出 % 字符。

    // 数字相关占位符
    // %b   二进制表示。
    // %c   对应的 Unicode 字符。
    // %d   十进制表示。
    // %o   八进制表示。
    // %x   十六进制表示(小写字母)。
    // %X   十六进制表示(大写字母)。
    // %f   十进制浮点数表示(默认精度 6)。
    // %e   科学计数法表示(小写 e)。
    // %E   科学计数法表示(大写 E)。

    // 字符串相关占位符
    // %s   输出字符串或字节切片内容。
    // %q   带双引号的字符串。
    // %x   每个字节以两位十六进制表示(小写)。
    // %X   每个字节以两位十六进制表示(大写)。

    // %t   输出布尔值的 true 或 false。

}

标签: Golang标准库