1、fmt:格式化输入输出库
package main
import "fmt"
func main(){
fmt.Println("Hello, World!")
}
2、net/http: HTTP 客户端和服务器库
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, 世界!")
})
http.ListenAndServe(":8080", nil)
}
3、os:操作系统相关库,如文件操作、环境变量
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.Create("test.txt")
if err != nil {
fmt.Println("创建文件失败:", err)
return
}
defer file.Close()
file.WriteString("Hello, 世界!")
}
4、strconv:字符串与基本数据类型之间的转换库
package main
import (
"fmt"
"strconv"
)
func main() {
num := 42
str := strconv.Itoa(num)
fmt.Println("字符串形式的数字:", str)
str = "42"
num, err := strconv.Atoi(str)
if err != nil {
fmt.Println("转换失败:", err)
return
}
fmt.Println("整数形式的数字:", num)
}
5、sync:并发编程同步原语库,如互斥锁、WaitGroup等
package main
import (
"fmt"
"sync"
)
func main() {
var wg sync.WaitGroup
wg.Add(2)
go func() {
fmt.Println("任务1完成")
wg.Done()
}()
go func() {
fmt.Println("任务2完成")
wg.Done()
}()
wg.Wait()
fmt.Println("所有任务完成")
}
6、io/ioutil:输入输出食用工具库,用于简化文件读写操作
package main
import (
"fmt"
"io/ioutil"
)
func main() {
content, err := ioutil.ReadFile("test.txt")
if err != nil {
fmt.Println("读取文件失败:", err)
return
}
fmt.Println("文件内容:", string(content))
}
7、encoding/json:JSON 编码和解码库
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
jsonStr := `{"name": "张三", "age": 30}`
var p Person
err := json.Unmarshal([]byte(jsonStr), &p)
if err != nil {
fmt.Println("解码失败:", err)
return
}
fmt.Printf("解码后的结构体: %+v\n", p)
data, err := json.Marshal(p)
if err != nil {
fmt.Println("编码失败:", err)
return
}
fmt.Println("编码后的 JSON 字符串:", string(data))
}
8、time:时间处理库
9、regexp:正则表达式库
package main
import (
"fmt"
"regexp"
)
func main() {
pattern := `^\d{3}-\d{2}-\d{4}$`
re := regexp.MustCompile(pattern)
input := "123-45-6789"
isMatch := re.MatchString(input)
fmt.Printf("输入字符串 %s 是否匹配模式 %s: %v\n", input, pattern, isMatch)
}
10、log:日志处理库
package main
import (
"log"
"os"
)
func main() {
file, err := os.OpenFile("log.txt", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
log.Fatal("打开日志文件失败:", err)
}
defer file.Close()
log.SetOutput(file)
log.Println("这是一条日志记录")
}
11、bufio:缓冲输入输出库,用于提高读写效率
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
file, err := os.Open("test.txt")
if err != nil {
fmt.Println("打开文件失败:", err)
return
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
fmt.Println(scanner.Text())
}
if err := scanner.Err(); err != nil {
fmt.Println("读取文件失败:", err)
}
}
12、path/filepath:文件路径操作库
package main
import (
"fmt"
"path/filepath"
)
func main() {
path := "/usr/local/go/src/fmt"
fmt.Println("文件路径:", path)
dir := filepath.Dir(path)
fmt.Println("目录:", dir)
base := filepath.Base(path)
fmt.Println("文件名:", base)
ext := filepath.Ext(path)
fmt.Println("扩展名:", ext)
}
13、sort:排序库,用于对切片和自定义数据结构进行排序
package main
import (
"fmt"
"sort"
)
func main() {
nums := []int{5, 3, 8, 1, 9}
sort.Ints(nums)
fmt.Println("排序后的整数切片:", nums)
strs := []string{"apple", "banana", "cherry", "orange"}
sort.Strings(strs)
fmt.Println("排序后的字符串切片:", strs)
}
14、container/list:双向链表库
package main
import (
"container/list"
"fmt"
)
func main() {
l := list.New()
l.PushBack(1)
l.PushBack(2)
l.PushBack(3)
for e := l.Front(); e != nil; e = e.Next() {
fmt.Println(e.Value)
}
}
15、math/rand:伪随机数生成库
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
rand.Seed(time.Now().UnixNano())
randomInt := rand.Intn(100)
fmt.Println("生成的随机整数:", randomInt)
randomFloat := rand.Float64()
fmt.Println("生成的随机浮点数:", randomFloat)
}