Go(Golang)标准库:完整概述
Go(或Golang)是Google开发的一种现代编译型编程语言,旨在实现简洁、高性能和可靠性。其受欢迎的主要原因之一是其强大且文档完善的标准库。与许多其他语言不同,Go“开箱即用”提供了丰富的包,涵盖了几乎所有基本任务:从文本处理到构建高负载Web服务。在本概述中,我们将通过代码示例详细介绍Go标准库中的关键包。
fmt包:格式化输入/输出
这是每位Go开发者首先接触的包。它提供了用于控制台格式化输出和数据读取的函数。
package main
import "fmt"
func main() { name := "Go" version := 1.22 // 格式化输出 fmt.Printf("语言:%s,版本:%.1f", name, version)
// 拼接字符串而不输出 message := fmt.Sprintf("你好,%s!", name) fmt.Println(message)}strings和strconv包:字符串处理
strings包包含用于字符串搜索、替换、分割和拼接的函数。strconv负责字符串与数字之间的转换。
import ( "fmt" "strconv" "strings")
func main() { s := "你好,世界!" // 子串搜索 if strings.Contains(s, "世界") { fmt.Println("已找到") } // 字符串分割 parts := strings.Split(s, ",") fmt.Println(parts[0]) // 你好
// 字符串转数字 num, _ := strconv.Atoi("42") fmt.Println(num + 8) // 50}net/http包:创建HTTP服务器和客户端
这是最强大的包之一。只需几行代码即可启动一个功能完整的HTTP服务器。广泛用于微服务和Web应用程序。
package main
import ( "fmt" "net/http")
func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "你好,%s!", r.URL.Path[1:])}
func main() { http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil)}encoding/json包:JSON处理
现代应用程序经常以JSON格式交换数据。encoding/json包可以轻松地将Go结构体序列化为JSON以及反序列化回结构体。
import ( "encoding/json" "fmt")
type User struct { Name string `json:"name"` Age int `json:"age"`}
func main() { user := User{Name: "阿列克谢", Age: 30} // 序列化为JSON jsonData, _ := json.Marshal(user) fmt.Println(string(jsonData)) // {"name":"阿列克谢","age":30}
// 从JSON反序列化 var decoded User json.Unmarshal(jsonData, &decoded) fmt.Println(decoded.Name) // 阿列克谢}io和os包:文件与流操作
os包提供了与操作系统交互的函数:文件读写、环境变量和命令行参数处理。io包含用于数据流(读/写)操作的接口。
import ( "io/ioutil" "os")
func main() { // 写入文件 data := []byte("Hello, Go!") ioutil.WriteFile("example.txt", data, 0644)
// 读取文件 content, _ := ioutil.ReadFile("example.txt") os.Stdout.Write(content)}sync包与goroutine:并发
Go以其通过goroutine(轻量级线程)和通道内置的并发支持而闻名。sync包提供了同步原语,例如互斥锁