GoLang教程——标准库精选
Go 被誉为“自带电池”(Batteries Included)的语言,因为其标准库极其丰富,涵盖了开发中 80% 的需求。本章精选了几个最常用、最基础的标准库,展示它们的常规用法。 示例代码 1package main 2 3import ( 4 "encoding/json" 5 "fmt" 6 "strings" 7 "time" 8) 9 10type User struct { 11 ID int `json:"id"` 12 Name string `json:"name"` 13 // json:"-" 表示在 JSON 中忽略该字段 14 Email string `json:"-"` 15} 16 17func main() { 18 // 1. fmt - 格式化 19 age := 18 20 // Sprintf 返回字符串,Printf 直接打印 21 msg := fmt.Sprintf("I am %d years old", age) 22 fmt.Println(msg) 23 24 // 2. strings - 字符串处理 25 str := " hello world " 26 fmt.Println(strings.TrimSpace(str)) // 去除首尾空格 27 fmt.Println(strings.Contains(str, "world")) // true 28 fmt.Println(strings.Join([]string{"a", "b"}, "-")) // a-b 29 30 // 3. time - 时间处理 31 now := time.Now() 32 // Go 的独特日期格式化模板:2006-01-02 15:04:05 33 fmt.Println(now.Format("2006-01-02 15:04:05")) 34 35 // 时间计算 36 later := now.Add(time.Hour) 37 fmt.Println(later.Sub(now)) // 1h0m0s 38 39 // 4. encoding/json - JSON 编解码 40 user := User{ID: 1, Name: "Hank", Email: "admin@hankmo.com"} 41 42 // 序列化 Struct -> JSON 43 jsonData, _ := json.Marshal(user) 44 fmt.Println(string(jsonData)) // {"id":1,"name":"Hank"} 45 46 // 反序列化 JSON -> Struct 47 var u2 User 48 json.Unmarshal(jsonData, &u2) 49 fmt.Println(u2.Name) 50} 关键点解释 fmt 包 Print / Println:标准输出。 Printf:格式化输出,常用占位符 %s(字符串), %d(整数), %v(自动推导), %+v(显示结构体字段名)。 time 包 格式化陷阱:必须记住基准时间 2006-01-02 15:04:05(助记:1月2号3点4分5秒06年)。 time.Duration:表示时间段,单位是纳秒。常用 10 * time.Second。 strings 包 提供了高效的不可变字符串操作:Split, Replace, Count, HasPrefix 等。 频繁拼接字符串推荐使用 strings.Builder。 encoding/json 包 利用 Struct Tags(如 `json:"name"`)来控制序列化行为。 只会序列化结构体中的 导出字段(首字母大写)。 小结 熟练使用标准库可以避免重复造轮子。除了上面介绍的,还有 net/http(Web服务)、io/ioutil(文件读写)、os(系统操作)等也非常重要。 ...