Golang入门后,应该重点学习哪些实用包?

Golang入门后,应该重点学习哪些实用包? 在掌握了Go语言的基础知识后,有哪些内置包是我应该立即开始学习的,以及有哪些资源可以教授这些包?

3 回复

谢谢 👍

更多关于Golang入门后,应该重点学习哪些实用包?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


学习 net/http 并编写一些 HTTP 服务器和客户端,在不使用任何外部库的情况下实现有趣的功能——这样做你会学到很多东西,并且会为你打下坚实的基础。

想法

  • 编写一个 HTTP 文件服务器,可以通过 HTTP 提供文件目录(带列表)。标准库在这方面会给你很多帮助。
  • 为已发布的 API 编写一个 HTTP 客户端,例如 https://ip-api.com/docs/api:json
  • 编写一个提供 JSON API 的 HTTP 服务器,用于将值保存到文件中并检索它们。
  • 编写一个命令行客户端来读取和设置这些值。
  • 编写一个提供 WebSocket 服务的 HTTP 服务器——实现一个聊天服务器。

对于Golang入门后的实用包学习,以下是我推荐的重点方向:

核心内置包

1. net/http - Web开发基础

package main

import (
    "fmt"
    "net/http"
)

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)
}

2. database/sql - 数据库操作

import (
    "database/sql"
    _ "github.com/go-sql-driver/mysql"
)

func main() {
    db, err := sql.Open("mysql", "user:password@/dbname")
    if err != nil {
        panic(err)
    }
    defer db.Close()
    
    rows, err := db.Query("SELECT id, name FROM users")
    // 处理查询结果
}

3. encoding/json - JSON处理

import "encoding/json"

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

func main() {
    // 序列化
    user := User{Name: "Alice", Age: 30}
    data, _ := json.Marshal(user)
    
    // 反序列化
    var newUser User
    json.Unmarshal(data, &newUser)
}

4. sync - 并发控制

import "sync"

func main() {
    var wg sync.WaitGroup
    var mu sync.Mutex
    var counter int
    
    for i := 0; i < 10; i++ {
        wg.Add(1)
        go func() {
            mu.Lock()
            counter++
            mu.Unlock()
            wg.Done()
        }()
    }
    
    wg.Wait()
    fmt.Println(counter)
}

5. osio - 文件系统操作

import (
    "io"
    "os"
)

func main() {
    // 文件读取
    file, _ := os.Open("test.txt")
    defer file.Close()
    
    // 文件写入
    newFile, _ := os.Create("output.txt")
    defer newFile.Close()
    
    io.Copy(newFile, file)
}

重要第三方包

1. gorilla/mux - 路由管理

import "github.com/gorilla/mux"

func main() {
    r := mux.NewRouter()
    r.HandleFunc("/users/{id}", getUser).Methods("GET")
    http.ListenAndServe(":8080", r)
}

2. gorm - ORM框架

import "gorm.io/gorm"

type Product struct {
    gorm.Model
    Code  string
    Price uint
}

func main() {
    db, _ := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
    db.AutoMigrate(&Product{})
}

3. testify - 测试框架

import "github.com/stretchr/testify/assert"

func TestAdd(t *testing.T) {
    result := Add(2, 3)
    assert.Equal(t, 5, result)
}

学习资源

  1. 官方文档go doc 命令和 pkg.go.dev
  2. Go by Example:实际代码示例
  3. 《Go语言圣经》:深入理解标准库
  4. GitHub Trending Go:查看流行项目源码

掌握这些包后,你将能够处理大多数Go开发任务,包括Web服务、数据库操作、并发编程和系统工具开发。

回到顶部