常用标准库 #

一、fmt包 #

1.1 打印函数 #

go
fmt.Print("Hello")
fmt.Println("Hello")
fmt.Printf("Hello %s\n", "World")

1.2 格式化动词 #

动词 说明
%v 默认格式
%T 类型
%d 整数
%f 浮点数
%s 字符串
%t 布尔值
%x 十六进制
%p 指针

1.3 格式化函数 #

go
s := fmt.Sprintf("Hello %s", "World")
fmt.Println(s)  // Hello World

1.4 输入函数 #

go
var name string
fmt.Scan(&name)
fmt.Scanf("%s", &name)

二、os包 #

2.1 文件操作 #

go
file, err := os.Open("file.txt")
if err != nil {
    log.Fatal(err)
}
defer file.Close()

2.2 创建文件 #

go
file, err := os.Create("file.txt")
if err != nil {
    log.Fatal(err)
}
defer file.Close()

2.3 读写文件 #

go
data, err := os.ReadFile("file.txt")
if err != nil {
    log.Fatal(err)
}
fmt.Println(string(data))

err = os.WriteFile("file.txt", []byte("Hello"), 0644)
if err != nil {
    log.Fatal(err)
}

2.4 目录操作 #

go
entries, err := os.ReadDir(".")
if err != nil {
    log.Fatal(err)
}
for _, entry := range entries {
    fmt.Println(entry.Name())
}

2.5 环境变量 #

go
fmt.Println(os.Getenv("PATH"))
os.Setenv("MY_VAR", "value")

2.6 命令行参数 #

go
fmt.Println(os.Args)

三、io包 #

3.1 Reader接口 #

go
type Reader interface {
    Read(p []byte) (n int, err error)
}

3.2 Writer接口 #

go
type Writer interface {
    Write(p []byte) (n int, err error)
}

3.3 Copy #

go
_, err := io.Copy(dst, src)

3.4 ReadAll #

go
data, err := io.ReadAll(reader)

3.5 Pipe #

go
r, w := io.Pipe()
go func() {
    w.Write([]byte("Hello"))
    w.Close()
}()
io.Copy(os.Stdout, r)

四、io/ioutil包 #

4.1 ReadFile #

go
data, err := ioutil.ReadFile("file.txt")

4.2 WriteFile #

go
err := ioutil.WriteFile("file.txt", []byte("Hello"), 0644)

4.3 ReadDir #

go
entries, err := ioutil.ReadDir(".")

4.4 TempDir #

go
dir, err := ioutil.TempDir("", "prefix")

4.5 TempFile #

go
file, err := ioutil.TempFile("", "prefix")

五、bufio包 #

5.1 Reader #

go
reader := bufio.NewReader(os.Stdin)
line, _ := reader.ReadString('\n')
fmt.Println(line)

5.2 Scanner #

go
scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan() {
    fmt.Println(scanner.Text())
}

5.3 Writer #

go
writer := bufio.NewWriter(os.Stdout)
writer.WriteString("Hello\n")
writer.Flush()

六、net/http包 #

6.1 HTTP服务器 #

go
func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello %s", r.URL.Path[1:])
}

func main() {
    http.HandleFunc("/", handler)
    http.ListenAndServe(":8080", nil)
}

6.2 HTTP客户端 #

go
resp, err := http.Get("https://example.com")
if err != nil {
    log.Fatal(err)
}
defer resp.Body.Close()

body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))

6.3 POST请求 #

go
resp, err := http.Post("https://example.com", "application/json", bytes.NewReader(data))

6.4 自定义请求 #

go
req, _ := http.NewRequest("GET", "https://example.com", nil)
req.Header.Set("Authorization", "Bearer token")

client := &http.Client{}
resp, _ := client.Do(req)

七、encoding/json包 #

7.1 序列化 #

go
type User struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

user := User{Name: "Alice", Age: 25}
data, _ := json.Marshal(user)
fmt.Println(string(data))

7.2 反序列化 #

go
var user User
json.Unmarshal([]byte(`{"name":"Alice","age":25}`), &user)
fmt.Println(user)

7.3 流式处理 #

go
encoder := json.NewEncoder(os.Stdout)
encoder.Encode(user)

decoder := json.NewDecoder(resp.Body)
decoder.Decode(&user)

八、time包 #

8.1 当前时间 #

go
now := time.Now()
fmt.Println(now)

8.2 格式化 #

go
fmt.Println(now.Format("2006-01-02 15:04:05"))

8.3 解析 #

go
t, _ := time.Parse("2006-01-02", "2024-01-01")

8.4 时间计算 #

go
later := now.Add(24 * time.Hour)
diff := later.Sub(now)

8.5 Timer #

go
timer := time.NewTimer(time.Second)
<-timer.C

8.6 Ticker #

go
ticker := time.NewTicker(time.Second)
for t := range ticker.C {
    fmt.Println(t)
}

九、log包 #

9.1 基本日志 #

go
log.Println("Hello")
log.Printf("Hello %s", "World")
log.Fatal("Fatal error")  // 退出程序
log.Panic("Panic")        // panic

9.2 自定义Logger #

go
logger := log.New(os.Stdout, "PREFIX: ", log.LstdFlags)
logger.Println("Hello")

十、总结 #

常用标准库要点:

用途
fmt 格式化I/O
os 操作系统功能
io I/O接口
net/http HTTP客户端/服务器
encoding/json JSON处理
time 时间处理
log 日志

关键点:

  1. fmt:格式化打印和输入
  2. os:文件、环境变量、命令行参数
  3. io:I/O接口和工具
  4. net/http:HTTP服务器和客户端
  5. encoding/json:JSON序列化

准备好学习文件操作了吗?让我们进入下一章!

最后更新:2026-03-26