Skip to content

第 16 章:常用标准库

16.1 输入输出:fmt 包

fmt 包是 Go 语言中用于格式化输入输出的标准库。

常用函数

输出函数

  • fmt.Println():打印并换行
  • fmt.Print():打印不换行
  • fmt.Printf():格式化打印
  • fmt.Sprintf():格式化字符串

示例

go
package main

import "fmt"

func main() {
    name := "Alice"
    age := 25
    
    fmt.Println("Hello, World!")
    fmt.Print("Hello, ")
    fmt.Println("World!")
    
    fmt.Printf("Name: %s, Age: %d\n", name, age)
    
    message := fmt.Sprintf("%s is %d years old", name, age)
    fmt.Println(message)
}

格式化动词

动词描述示例
%v通用格式fmt.Printf("%v", 42)
%d十进制整数fmt.Printf("%d", 42)
%f浮点数fmt.Printf("%f", 3.14)
%s字符串fmt.Printf("%s", "hello")
%t布尔值fmt.Printf("%t", true)
%p指针fmt.Printf("%p", &x)

16.2 字符串处理:strings 包

strings 包提供了字符串操作的函数。

常用函数

  • strings.Contains():检查字符串是否包含子串
  • strings.Index():查找子串位置
  • strings.Split():分割字符串
  • strings.Join():连接字符串
  • strings.Trim():去除首尾空白
  • strings.ToUpper():转为大写
  • strings.ToLower():转为小写

示例

go
package main

import (
    "fmt"
    "strings"
)

func main() {
    s := "Hello, World!"
    
    fmt.Println(strings.Contains(s, "World")) // true
    fmt.Println(strings.Index(s, "World"))    // 7
    
    parts := strings.Split(s, ", ")
    fmt.Println(parts) // [Hello World!]
    
    joined := strings.Join(parts, " - ")
    fmt.Println(joined) // Hello - World!
    
    trimmed := strings.Trim("  Hello  ", " ")
    fmt.Println(trimmed) // Hello
    
    fmt.Println(strings.ToUpper(s)) // HELLO, WORLD!
    fmt.Println(strings.ToLower(s)) // hello, world!
}

16.3 时间处理:time 包

time 包提供了时间处理的函数。

常用函数

  • time.Now():获取当前时间
  • time.Date():创建指定时间
  • time.Duration:表示时间间隔
  • time.Sleep():休眠指定时间
  • time.Parse():解析时间字符串

示例

go
package main

import (
    "fmt"
    "time"
)

func main() {
    // 获取当前时间
    now := time.Now()
    fmt.Println(now)
    
    // 格式化时间
    fmt.Println(now.Format("2006-01-02 15:04:05"))
    
    // 创建指定时间
    t := time.Date(2023, 12, 25, 10, 30, 0, 0, time.UTC)
    fmt.Println(t)
    
    // 时间间隔
    d := 2 * time.Second
    fmt.Println(d)
    
    // 休眠
    time.Sleep(1 * time.Second)
    fmt.Println("After sleep")
    
    // 解析时间
    t2, err := time.Parse("2006-01-02", "2023-12-25")
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Println(t2)
    }
}

16.4 随机数:math/rand

math/rand 包提供了生成随机数的函数。

常用函数

  • rand.Seed():设置随机种子
  • rand.Int():生成随机整数
  • rand.Intn():生成指定范围内的随机整数
  • rand.Float64():生成随机浮点数

示例

go
package main

import (
    "fmt"
    "math/rand"
    "time"
)

func main() {
    // 设置随机种子
    rand.Seed(time.Now().UnixNano())
    
    // 生成随机整数
    fmt.Println(rand.Int())
    
    // 生成 0-99 之间的随机整数
    fmt.Println(rand.Intn(100))
    
    // 生成 0.0-1.0 之间的随机浮点数
    fmt.Println(rand.Float64())
    
    // 生成 1.0-10.0 之间的随机浮点数
    fmt.Println(1.0 + rand.Float64()*9.0)
}

16.5 文件操作:os、io 包

os 包

os 包提供了操作系统相关的功能,包括文件操作。

常用函数

  • os.Open():打开文件
  • os.Create():创建文件
  • os.Remove():删除文件
  • os.Rename():重命名文件
  • os.Getwd():获取当前工作目录
  • os.Chdir():改变工作目录

示例

go
package main

import (
    "fmt"
    "os"
)

func main() {
    // 获取当前工作目录
    wd, err := os.Getwd()
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Println("Current directory:", wd)
    }
    
    // 创建文件
    file, err := os.Create("test.txt")
    if err != nil {
        fmt.Println(err)
    } else {
        defer file.Close()
        fmt.Println("File created")
    }
    
    // 重命名文件
    err = os.Rename("test.txt", "rename.txt")
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Println("File renamed")
    }
    
    // 删除文件
    err = os.Remove("rename.txt")
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Println("File deleted")
    }
}

io 包

io 包提供了基本的 I/O 接口。

常用接口

  • io.Reader:读取接口
  • io.Writer:写入接口
  • io.Copy():复制数据

示例

go
package main

import (
    "fmt"
    "io"
    "os"
    "strings"
)

func main() {
    // 从字符串读取
    reader := strings.NewReader("Hello, World!")
    
    // 写入到标准输出
    io.Copy(os.Stdout, reader)
    fmt.Println()
    
    // 从文件读取
    file, err := os.Open("example.txt")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer file.Close()
    
    // 写入到标准输出
    io.Copy(os.Stdout, file)
}

© 2026 编程马·菜鸟教程 版权所有