go语言中常用的标准库

go中常用标准库

  • go的开发中,经常会使用一些库,把这些库整理出来,方便记忆

系统相关

unsafe:

  • 包含了一些打破 Go 语言“类型安全”的命令,一般的程序中不会被使用,可用在 C/C++ 程序的调用中。
    在这里插入图片描述

syscall

  • 底层的外部包,提供了操作系统底层调用的基本接口
	//查询操作系统环境变量对应的值,其实就是在 export 命令的结果中查找
	c, _ := syscall.Getenv("GOPATH")
	// Env: /Users/gyk/go
	fmt.Printf("Env: %s\n", c)

os

  • 提供给我们一个平台无关性的操作系统功能接口,采用类 Unix 设计,隐藏了不同操作系统间的差异,让不同的文件系统和操作系统对象表现一致。
  • 常用文件操作的命令如下
	//创建文件
	os.Create("/data/chant/gs/bs.ini")

	//打开文件不存在就创建
	os.OpenFile("a.ini", os.O_CREATE|os.O_WRONLY|os.O_RDONLY, 0666)

	//仅仅打开文件,不存在就打开失败
	os.Open("a.ini")

	//一次性读取文件内容到字节数组
	dd, _ := os.ReadFile("t.ini")
	fmt.Printf("%s\n", string(dd))

	//如果gs目录不存在就创建gs目录
	os.Mkdir("/data/chant/gs", 0750)

	//往文件写入数据
	os.WriteFile("testdata/hello", []byte("Hello, Gophers!"), 0666)

	//返回系统环境变量数组[]string,同 export
	os.Environ()

	//会依次创建所有目录,同 mkdir -p /data/chant/gs
	os.MkdirAll("/data/chant/gs", 0750)

	//获取当前工作目录的路径,同 pwd
	os.Getwd()

	// 返回从命令行获取的所有参数[]string ,编写帮助工具或者其他带参数的脚本时使用
	os.Args

	//强制退出程序
	os.Exit(0)

	//删除文件
	os.Remove("t.ini")
	
	//删除当前目录和子目录下的所有内容
	os.RemoveAll("/data/chant/")

os/exec

  • 提供我们运行外部操作系统命令和程序的方式。
//命令行访问百度
import (
	"os/exec"
)
exec.Command("curl", "https://baidu.com")
//在环境变量(echo $PATH) 的路径中去查找对于文件是否存在
import (
	"fmt"
	"os/exec"
)

path, err := exec.LookPath("go")
	if err != nil {
		//不存在会报错
		//Error: exec: "VERSION": executable file not found in $PATH
		fmt.Printf("Error: %v\n", err)
		return
	}
	//存在会打印出对应文件路径
	// Path: /Users/gyk/go/go1.19.9/bin/go
	fmt.Printf("Path: %s\n", path)

文件操作相关

fmt

  • 提供了格式化输入输出功能。
  • 常用简单的调试函数
	fmt.Printf("格式化字符串并输出控制台: %s, %d,%v,%.2f", "您", 2, []byte("yes"), 22.333332)
	
	fmt.Println("打印字符串并换行")
	
	fmt.Sprintf("格式化字符串并保存到字符串中并返回: %s,%d", "hello", "2023")

io

  • 提供了基本输入输出功能,大多数是围绕系统功能的封装。

bufio

  • 缓冲输入输出功能的封装。

path/filepath

  • 用来操作在当前系统中的目标文件名路径。

flag

  • 对命令行参数的操作。

字符串操作

strings

  • 提供对字符串的操作。

strconv

  • 提供将字符串转换为基础类型的功能。

unicode

  • unicode 型的字符串提供特殊的功能。

regexp

  • 正则表达式功能。

bytes

  • 提供对字符型分片的操作。

数学函数

math

  • 基本的数学函数。

math/cmath

  • 复数的操作。

math/rand

  • 伪随机数生成。

sort

  • 数组排序和自定义集合。

math/big

  • 大数的实现和计算。   
    container-/list-ring-heap: 实现对集合的操作。

list

  • 双链表。

ring

  • 环形链表。

日期时间操作

time

  • 日期和时间的基本操作。

日志

log

  • 记录程序运行时产生的日志。
  • 让log重定向日志文件
package process

import (
	"fmt"
	"os"
	time2 "time"
)

type LogFile struct {
	Filename string
}

func init() {
	lf = LogFile{
		"log.log",
	}
	//设置重定向文件地址
	log.SetOutput(&lf)
}

// 定义日志输出目录,这里是实现Write接口
func (l *LogFile) Write(p []byte) (int, error) {
	rootPwd, _ := os.Getwd()

	rootPwd = rootPwd + "/log/"

	if err := os.Mkdir("log", 0777); err == nil {
		fmt.Printf("日志文件夹创建成功:%v\n", rootPwd)
	}

	time := time2.Now()

	logPrefix := fmt.Sprintf("%4d-%02d-%02d", time.Year(), time.Month(), time.Day())

	f, err := os.OpenFile(rootPwd+logPrefix+l.Filename, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)

	defer f.Close()

	if err != nil {
		return -1, err
	}

	return f.Write(p)
}

encoding/json

  • 读取并解码和写入并编码 JSON 数据。

encoding/xml:

  • 简单的 XML 解析器。

text/template

  • 生成像 HTML 一样的数据与文本混合的数据驱动模板。

net

  • 网络数据的基本操作。

http

  • 提供了可扩展的 HTTP 服务器和基础客户端,解析 HTTP 请求和回复。

html

  • HTML5 解析器。

runtime

  • go 程序运行时的交互操作。
  • 常用操作
	//设置运行时调用cpu核数
	runtime.GOMAXPROCS(2)
	//返回cpu核心数
	runtime.NumCPU()
	//返回变量GOROOT 路径
	runtime.GOROOT()
	//返回go版本 go1.19.9
	runtime.Version()

反射

reflect

通过程序运行时反射,让程序操作任意类型的变量

type ConfigProcess struct {
	Url       string `ini:"url"`       //请求url
	X         string `ini:"x"`         //请求方式 post or get
	C         int64  `ini:"c"`         //开启协程数量
	N         int64  `ini:"n"`         //每个协程请求次数
	H         string `ini:"h"`         //header设置
	D         string `ini:"d"`         //请求参数设置
	T         int64  `ini:"t"`         //持续压测时间
	Assertion string `ini:"assertion"` //结果断言,字符串查找
}

// config配置参数
type Config struct {
	ConfigProcess `ini:"process"`
}
//通过反射,获取配置struct中的 键值 赋值给 []string,模拟os.Args
func TransferConfig(config *Config) []string {
	k := reflect.TypeOf(config.ConfigProcess)
	v := reflect.ValueOf(config.ConfigProcess)
	var args []string
	args = append(args, "main.go")
	for i := 0; i < k.NumField(); i++ {
		field := k.Field(i)
		value := v.Field(i)
		args = append(args, "-"+strings.ToLower(field.Name))
		switch field.Type.Kind() {
		case reflect.String:
			args = append(args, value.String())
		case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
			args = append(args, fmt.Sprintf("%d", value.Int()))
		}
	}
	return args
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: "Go语言标准库文手册.chm"是一份关于Go语言标准库文手册文件。Go语言是一种开源的静态类型编程语言,具有高效、简洁和易于使用的特点。标准库Go语言提供的一组基础性的工具和功能,开发人员可以直接使用这些库来实现各种任务。 这个文手册文件提供了对Go语言标准库的详细解释和示例,使开发人员能够更好地理解和使用标准库的各种函数和模块。手册以CHM格式提供,这是一种常见的帮助文档文件格式,可以在Windows操作系统上方便地阅读和搜索。 通过阅读这个文手册,开发人员可以了解到标准库各个模块的功能和使用方法。比如,可以学习如何使用io模块进行文件读写,如何使用net模块进行网络编程,以及如何使用fmt模块进行格式化输出等等。手册还包含了对各种常见数据结构和算法的详细解释,开发人员可以通过研究这些内容来优化自己的代码。 总之,"Go语言标准库文手册.chm"是一份非常有价值的资料,它为开发人员提供了学习和使用Go语言标准库的指导。通过仔细阅读这个手册,开发人员可以更加高效地使用Go语言进行开发,提高开发效率和代码质量。 ### 回答2: go语言标准库文手册.chm 是一本关于Go编程语言标准库文手册。它是一本电子书,采用CHM格式。在Go语言标准库是非常重要的资源,它包含了许多常用的功能和模块,开发者可以直接使用这些库来实现各种功能。这本文手册为开发者提供了对Go标准库的详细介绍和使用指导。 这本手册由Go语言官方提供,致力于帮助开发者更好地理解和使用Go标准库。它包含了标准库的各个模块的详细说明,包括包名称、功能介绍、函数和方法的使用说明等。同时,手册也提供了示例代码和常见问题的解答,方便开发者快速上手和解决问题。 这本文手册的CHM格式具有很多优点。它具有方便的导航功能,可以快速查找需要的内容。同时,它支持全文搜索功能,用户可以通过关键词搜索相关内容。此外,手册的链接和交叉引用也让用户可以方便地跳转到相关章节。 对于初学者来说,这本文手册是一本宝贵的学习资料。通过阅读手册,他们可以深入了解Go标准库的功能和用法,并能够利用这些库来开发自己的应用程序。对于有经验的开发者来说,手册也是一个不可或缺的参考工具,它提供了对标准库的全面了解,可以帮助他们更高效地开发和调试程序。 总之,go语言标准库文手册.chm 是一本对于使用Go编程语言的开发者来说非常有价值的电子书。它提供了Go标准库的详细介绍和使用指导,帮助开发者更好地利用标准库来实现各种功能。无论是初学者还是有经验的开发者,都可以从这本手册受益匪浅。 ### 回答3: go语言标准库文手册.chm是一本汇集了Go语言标准库文手册。这本手册提供了Go语言标准库的详细文档和示例代码,为开发者提供了查阅和学习Go语言标准库的便利。 Go语言标准库包含了许多常用的功能和工具,如网络通信、文件操作、并发编程、加密算法等。通过这本手册,开发者可以了解每个标准库的功能和使用方法,从而更好地利用这些库来开发自己的应用程序。 这本手册采用了文翻译,方便文用户理解和使用。无论是初学者还是有一定经验的开发者,都可以通过这本手册快速上手和使用Go语言标准库。 由于这本手册是以.chm格式发布的,用户可以在Windows系统直接打开和阅读。同时,用户也可以将这本手册转换为其他格式,如PDF或EPUB,以便在其他设备或平台上使用。 总而言之,go语言标准库文手册.chm是一本详细介绍和解释Go语言标准库文手册,通过这本手册,开发者可以更好地理解和使用Go语言标准库,提高开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值