sync
包提供了一些基本的同步原语,如互斥锁(Mutex)和条件变量(Cond),用于处理并发编程。
goCopy codepackage main
import (
"fmt"
"sync"
"time"
)
func main() {
var wg sync.WaitGroup
var mu sync.Mutex
for i := 0; i < 5; i {
wg.Add(1)
go func(i int) {
defer wg.Done()
mu.Lock()
defer mu.Unlock()
fmt.Println("Goroutine", i, "is working.")
}(i)
}
wg.Wait()
}
14. io - 输入输出操作
io
包提供了基本的输入输出接口,用于进行文件读写和数据流的处理。
goCopy codepackage main
import (
"fmt"
"io/ioutil"
)
func main() {
content := []byte("Hello, Golang!")
err := ioutil.WriteFile("example.txt", content, 0644)
if err != nil {
panic(err)
}
readContent, err := ioutil.ReadFile("example.txt")
if err != nil {
panic(err)
}
fmt.Println("File content:", string(readContent))
}
15. strconv - 字符串转换
strconv
包提供了一系列函数,用于在基本数据类型和字符串之间进行转换。
goCopy codepackage main
import (
"fmt"
"strconv"
)
func main() {
str := "42"
num, err := strconv.Atoi(str)
if err == nil {
fmt.Println("Converted number:", num)
}
// 整数转字符串
newStr := strconv.Itoa(123)
fmt.Println("Converted string:", newStr)
}
16. log - 日志记录
log
包用于输出日志信息,提供了一个简单的日志记录接口。
goCopy codepackage main
import (
"log"
)
func main() {
log.Print("This is a log message.")
log.Printf("Logging with format: %s", "Golang")
log.Fatal("Fatal error. The program will exit.")
}
17. flag - 命令行参数解析
flag
包用于解析命令行参数,方便从命令行接收输入。
goCopy codepackage main
import (
"flag"
"fmt"
)
func main() {
var name string
flag.StringVar(&name, "name", "Gopher", "Your name")
flag.Parse()
fmt.Println("Hello,", name)
}
18. context - 上下文管理
context
包提供了一种跨API边界、请求范围传递截止日期、取消信号和其他元数据的途径。
goCopy codepackage main
import (
"context"
"fmt"
"time"
)
func main() {
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
select {
case <-time.After(3 * time.Second):
fmt.Println("Operation completed.")
case <-ctx.Done():
fmt.Println("Operation canceled:", ctx.Err())
}
}
这些是一些基础常用的Go语言库及其用法,包括并发编程、输入输出、字符串转换、日志记录、命令行参数解析和上下文管理等方面。根据项目的具体需求,你可以选择适用的库来进行开发。