常用标准库 #
一、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 | 日志 |
关键点:
- fmt:格式化打印和输入
- os:文件、环境变量、命令行参数
- io:I/O接口和工具
- net/http:HTTP服务器和客户端
- encoding/json:JSON序列化
准备好学习文件操作了吗?让我们进入下一章!
最后更新:2026-03-26