go(二)
介绍一些常用的包
1、flag
导入方法:
flag包实现了命令行参数的解析,据我的理解就是数据绑定。使用flag.String(), Bool(), Int()等函数注册flag,下例声明了一个整数flag,解析结果保存在*int指针ip里
将flag绑定到一个变量,使用Var系列函数
自定义一个用于flag的类型(满足Value接口)并将该类型用于flag解析
在所有flag都注册之后,调用
flag.Parse() f l a g . P a r s e ( )
解析命令行参数写入注册的flag里。解析之后,flag的值可以直接使用。如果你使用的是flag自身,它们是指针;如果你绑定到了某个变量,它们是值。
解析后,flag后面的参数可以从flag.Args()里获取或用flag.Arg(i)单独获取。这些参数的索引为从0到flag.NArg()-1。
2、net/http
导入包:
http包提供了HTTP客户端和服务端的实现。
Get、Head、Post和PostForm函数发出HTTP/ HTTPS请求。
程序在使用完回复后必须关闭回复的主体
要管理HTTP客户端的头域、重定向策略和其他设置,创建一个Client
要管理代理、TLS配置、keep-alive、压缩和其他设置,创建一个Transport
Client和Transport类型都可以安全的被多个go程同时使用。出于效率考虑,应该一次建立、尽量重用
ListenAndServe使用指定的监听地址和处理器启动一个HTTP服务端。处理器参数通常是nil,这表示采用包变量DefaultServeMux作为处理器。Handle和HandleFunc函数可以向DefaultServeMux添加处理器
管理服务端的行为,可以创建一个自定义的Server
3、net/http/pprof
导入包
通过它的HTTP服务端提供pprof可视化工具期望格式的运行时剖面文件数据服务,
使用pprof工具查看堆剖面
或查看周期30秒的CPU剖面
或查看go程阻塞剖面
4、os
导入
os包提供了操作系统函数的不依赖平台的接口。设计为Unix风格的,虽然错误处理是go风格的;失败的调用会返回错误值而非错误码。通常错误值里包含更多信息
如果打开失败,错误字符串是自解释的
文件的信息可以读取进一个[]byte切片。Read和Write方法从切片参数获取其内的字节数。
5、sync
导入:
sync包提供了基本的同步基元,如互斥锁。除了Once和WaitGroup类型,大部分都是适用于低水平程序线程,高水平的同步使用channel通信更好一些。
6、atomic
导入:
atomic包提供了底层的原子级内存操作,对于同步算法的实现很有用。
除了某些特殊的底层应用,使用通道或者sync包的函数/类型实现同步更好。
应通过通信来共享内存,而不通过共享内存实现通信。
7、time
time包提供了时间的显示和测量用的函数。日历的计算采用的是公历。
8、json
json包实现了json对象的编解码,参见RFC 4627。Json对象和go类型的映射关系请参见Marshal和Unmarshal函数的文档。
9、strings
strings包实现了用于操作字符的简单函数
10、user
user包允许通过名称或ID查询用户帐户。
11、errors
errors包实现了创建错误值的函数
12、filepath
filepath包实现了兼容各操作系统的文件路径的实用操作函数
13、fmt
mt包实现了类似C语言printf和scanf的格式化I/O。格式化动作(’verb’)源自C语言但更简单
14、runtime
runtime包提供和go运行时环境的互操作,如控制go程的函数。它也包括用于reflect包的低层次类型信息;参见reflect报的文档获取运行时类型系统的可编程接口。
下面的环境变量($name或%name%,这依赖于主机的操作系统)控制go程序的运行时行为。它们的含义和用法可能在各发行版之间改变。
环境变量GOGC设置最初的垃圾收集目标百分比。当新申请的数据和前次垃圾收集剩下的存活数据的比率达到该百分比时,就会触发垃圾收集。默认GOGC=100。设置GOGC=off 会完全关闭垃圾收集。runtime/debug包的SetGCPercent函数允许在运行时修改该百分比。参见http://golang.org/pkg/runtime/debug/#SetGCPercent
环境变量GODEBUG控制运行时的debug输出。GODEBUG的值是逗号分隔的name=val对。支持的name如下:
环境变量GOMAXPROCS限制可以同时运行用户层次的go代码的操作系统进程数。没有对代表go代码的、可以在系统调用中阻塞的go程数的限制;那些阻塞的go程不与GOMAXPROCS限制冲突。本包的GOMAXPROCS函数可以查询和修改该限制。
环境变量GOTRACEBACK控制当go程序因为不能恢复的panic或不期望的运行时情况失败时的输出。失败的程序默认会打印所有现存go程的堆栈踪迹(省略运行时系统中的函数),然后以状态码2退出。如果GOTRACEBACK为0,会完全忽略所有go程的堆栈踪迹。如果GOTRACEBACK为1,会采用默认行为。如果GOTRACEBACK为2,会打印所有现存go程包括运行时函数的堆栈踪迹。如果GOTRACEBACK为crash,会打印所有现存go程包括运行时函数的堆栈踪迹,并且如果可能会采用操作系统特定的方式崩溃,而不是退出。例如,在Unix系统里,程序会释放SIGABRT信号以触发核心信息转储。
环境变量GOARCH、GOOS、GOPATH和GOROOT构成完整的go环境变量集合。它们影响go程序的构建(参见http://golang.org/cmd/go andhttp://golang.org/pkg/go/build)。
GOARCH、GOOS和GOROOT在编译时被记录并可用本包的常量和函数获取,但它们不会影响运行时环境。
15、signal
signal包实现了对输入信号的访问。
16、bytes
bytes包实现了操作[]byte的常用函数。本包的函数和strings包的函数相当类似。
17、strconv
strconv包实现了基本数据类型和其字符串表示的相互转换。
18、math/rand
rand包实现了伪随机数生成器。
随机数从资源生成。包水平的函数都使用的默认的公共资源。该资源会在程序每次运行时都产生确定的序列。如果需要每次运行产生不同的序列,应使用Seed函数进行初始化。默认资源可以安全的用于多go程并发。
19、sort
sort包提供了排序切片和用户自定义数据集的函数。