前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >golang一些常用库(2)

golang一些常用库(2)

原创
作者头像
dbdocker
发布2024-02-04 16:27:33
1450
发布2024-02-04 16:27:33
举报
文章被收录于专栏:go语言go语言

sync 包提供了一些基本的同步原语,如互斥锁(Mutex)和条件变量(Cond),用于处理并发编程。

代码语言:javascript
复制
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 包提供了基本的输入输出接口,用于进行文件读写和数据流的处理。

代码语言:javascript
复制
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 包提供了一系列函数,用于在基本数据类型和字符串之间进行转换。

代码语言:javascript
复制
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 包用于输出日志信息,提供了一个简单的日志记录接口。

代码语言:javascript
复制
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 包用于解析命令行参数,方便从命令行接收输入。

代码语言:javascript
复制
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边界、请求范围传递截止日期、取消信号和其他元数据的途径。

代码语言:javascript
复制
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语言库及其用法,包括并发编程、输入输出、字符串转换、日志记录、命令行参数解析和上下文管理等方面。根据项目的具体需求,你可以选择适用的库来进行开发。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 14. io - 输入输出操作
  • 15. strconv - 字符串转换
  • 16. log - 日志记录
  • 17. flag - 命令行参数解析
  • 18. context - 上下文管理
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档