1. strings包
1.1 检索字符串
方法 | 功能描述 |
func Contains(s, subStr string) bool | 字符串s是否包含子串subStr |
func ContainsAny(s, chars string) bool | 字符串s是否包含chars中任一字符 |
func ContainsRune(s string, r rune) | 字符串s是否包含unicode码值r |
func Count(s, sep string) int | 字符串s包含sep的个数 |
func HasPrefix(s, prefix string) bool | 字符串s是否有前缀字符串prefix |
func HasSuffix(s, suffix string) bool | 字符串s是否有后缀字符串prefix |
func Index(s, sep string) int | 字符串sep在s中首次出现的位置 |
func IndexAny(s, chars string) int | 字符串chars中任一unicode码值在s中首次出现的位置 |
func IndexByte(s string, c char) int | 字符c在s中首次出现的位置 |
func IndexFunc(s string, f func()bool) int | 字符串s中首次满足 f(r) ==true的位置 |
func IndexRune(s string, r rune) int | 字符串s中unicode码值r首次出现的位置 |
func LastIndex(s, sep string) int | 字符串sep在s中最后一次出现的位置 |
func LastIndexAny(s, chars string) int | 字符串chars中任一unicode码值在s中最后一次出现的位置 |
func LastIndexByte(s string, c char) int | 字符c在s中最后一次出现的位置 |
func LastIndexFunc(s string, f func()bool) int | 字符串s中最后一次满足 f(r) ==true的位置 |
1.2 分割字符串
方法 | 功能 |
func Fields(s string) []string | 将字符串s以空格字符分割成一个切片 |
func FieldsFunc(s string, f func(rune)bool) []string | 将字符串s以f(r) ==true字符分割成一个切片 |
func Split(s, sep string) []string | 将字符串s以sep为分隔符分割,分割后的字符去掉sep |
func SplitAfter(s, sep string) []string | 将字符串s以sep为分隔符分割,分割后的字符附上sep |
func SplitN(s, sep string, n int) []string | 将字符串s以sep为分隔符分割,分割后的字符去掉sep,n决定返回的切片数 |
func SplitAfter(s, sep string, n int) []string | 将字符串s以sep为分隔符分割,分割后的字符附上sep,n决定返回的切片数 |
1.3 大小写转换
方法 | 功能 |
func Title(s string) string | 将字符串s中的每个单词的首字母大写返回 |
func ToLower(s string) string | 将字符串s转换成小写返回 |
func ToTitle(s string) string | 将字符串s转换成大写返回 |
func ToUpper(s string) string | 将字符串s转换成大写返回 |
func ToLowerSpecial(_case unicode.SpecialCase, s string) string | 将字符串s中的所有字符按_case指定的映射转换成小写返回 |
func ToTitleSpecial(_case unicode.SpecialCase, s string) string | 将字符串s中的所有字符按_case指定的映射转换成大写返回 |
func ToUpperSpecial(_case unicode.SpecialCase, s string) string | 将字符串s中的所有字符按_case指定的映射转换成大写返回 |
1.4 修剪字符串
方法 | 功能 |
funcTrim(s string, cutset string) string | 将字符串s首尾包含在cutset中的任一字符去掉返回 |
funcTrimFunc(s string, f func(rune)bool) string | 将字符串s首尾满足 f(r)==true 的字符去掉返回 |
funcTrimLeft(s string, cutset string) string | 将字符串s左边包含在cutset中的任一字符去掉返回 |
funcTrimLeftFunc(s string, f func(rune)bool) string | 将字符串s左边满足 f(r)==true 的字符去掉返回 |
func TrimPrefix(s, prefix string) string | 将字符串s中前缀字符串prefix去掉返回 |
func | |
funcTrimRight(s string, cutset string) string | 将字符串s右边包含在cutset中的任一字符去掉返回 |
funcTrimRightFunc(s string, f func(rune)bool) string | 将字符串s右边满足 f(r)==true 的字符去掉返回 |
func TrimSpace(s string) string | 将字符串s首尾空白去掉返回 |
func TrimSuffix(s, suffix string) string | 将字符串s后后缀字符串suffix去掉返回 |
1.5 比较字符串
方法 | 功能 |
func Compare(a, b string) int | 按字典顺序比较a b字符串大小 |
func EqualFold(s, t string) bool | 判断s和t两个UTF-8字符串是否相等,忽略大小写 |
func Repeat(s string, count int) string | 将字符串s重复count次返回 |
func Replace(s, old, new string, n int) string | 替换字符串s中old字符为new并返回,n<0时,替换所有old字符串 |
func Join(a []string, sep string) string | 将a中所有字符连接成一个字符串,使用字符串sep作为分隔符 |
2. strconv包
2.1 Parse类函数
Parse类函数主要的功能是将字符串转换为其他类型。
方法 | 功能 |
func Atoi(s string) (int, error) | 将字符串s转换为整数 |
func ParseInt(s string, base int, bitSize int) (int64, error) | 将字符串解析成数字,base表示进制(2到36)。如果base为0,则从前缀判断:0x-16,0-8,否则就是十进制。bitSize指定结果,必须是能无溢出赋值的整数类型:0-int, 8-int8, 16-int16, 32-int32, 64-int64 |
func ParseUint(s string, base int, bitSize int) (uint64, error) | 类似于 ParseInt |
func ParseFloat(s string, bitSize int) (float64, error) | 解析一个表示浮点数的字符串并返回其值 |
func ParseBool(s string) (bool, error) | 返回字符串表示的布尔值,它接受 1 t T TRUE True true 0 f F FALSE False false。任何其他值都返回错误。 |
2.2 Format类函数
Format类函数主要的功能是将其他类型格式化成字符串
方法 | 功能 |
func Itoa(i int) string | Itoa是FormatInt(int64(i), 10)的缩写,int转换成string |
func FormatInt(i int64, base int) string | 返回给定基数的i的字符串表示,base(2到36) |
func FormatUint(i uint64, base int) string | 类似于FormatInt |
func FormatFloat(f float64, fmt byte, prec, bitSize int) string | 将浮点数表示为字符串返回。bitSize表示f的来源类型(32:float32,64:float64),fmt表示格式(f b e E g G),prec控制精度:对 f e E表示小数点后数字个数,对g G表示数字总数。prec = -1时表示最少数量但又必须的数字来表示 |
func FormatBool(b bool) string | 根据bool值返回 true 或 false |
3. time包
time包提供了时间的显示和测量用的函数。日历的计算采用的是公历。
方法 | 功能 |
func Now() Time | 返回当前本地时间 |
func (t Time)Local() Time | 将时间转换为本地时区 |
func (t Time)UTC() Time | 将时间转换为0时区 |
func Date(year int, month Month, day, hour, min, sec, nsec int, loc Location) Time | 根据指定值返回一个时间,loc用于指定时区:time.Local time.UTC |
func Parse(layout, value string) (Time, error) | 将string类型转换为Time类型,layout表示参考时间格式,如果没有时区信息,则按UTC设置 |
func (t Time)Format(layout string) string | 将Time格式转换为string类型 |
func (t Time)String() string | 相当于固定格式的Format |
func (t Time)Unix() int64 | 将 t 表示为Unix时间,即从1.1.1970UTC到时间点 t 所经历的时间(单位秒) |
func (t Time)UnixNano() int64 | 将 t 表示为Unix时间,即从1.1.1970UTC到时间点 t 所经历的时间(单位纳秒) |
func (t Time)Equal(u time) bool | 此方法会考虑时区的影响,不同于 t == u 的比较 |
func (t Time)Before(u time) bool | 如果 t 在 u 之前,则返回true |
func (t Time)After(u time) bool | 如果 t 在 u 之后,则返回true |
func (t Time)Date() (year int, month Month, day int) | 返回 t 对应的年、月、日 |
func (t Time) Year() int | 返回 t 对应的年份 |
func (t Time) Month() Month | 返回 t 对应的月份 |
func (t Time) Day() int | 返回 t 对应的月份的第几天 |
func (t Time) Weekday() Weekday | 返回 t 对应的那天的周几 |
func (t Time) Clock() (hour, min, sec int) | 返回 t 对应的那天的时、分、秒 |
func (t Time) Hour() int | 返回 t 对应的那天的几点 |
func (t Time) Minute() int | 返回 t 对应的那天的几分 |
func (t Time) Second() int | 返回 t 对应的那天的几秒 |
func (t Time) Nanosecond() int | 返回 t 对应的那天的几纳秒 |
func (t Time)Sub(u time) Duration | 返回一个时间段t-u。如果超过了Duration的极值表示范围,则返回极值。 |
func (d Duration)Hours() float64 | 将时间段表示为float64类型的小时数 |
func (d Duration)Minutes() float64 | 将时间段表示为float64类型的分钟数 |
func (d Duration)Seconds() float64 | 将时间段表示为float64类型的秒数 |
func (d Duration)Nanoseconds() int64 | 将时间段表示为float64类型的纳秒数,等价于 int64(d) |
func (d Duration)String() string | 返回时间段的字符串表示,如: “7h53m0.5s”,前面可以有符号。 |
func ParseDuration(s string)(Duration, error) | 解析一个时间段字符串 |
func (t Time)Add(d Duration) Time | 返回一个时间点 t+d |
func (t Time)AddDate(year, month, day int) Time | 返回一个时间点 |
4. math包
math包提供了基本的数学常数和数学函数。
方法 | 功能 |
func IsNaN(f float64) bool | f 是否表示一个NaN(Not a Number)值 |
func Ceil(x float64) float64 | 返回不小于 x 的最小整数(的浮点值) |
func Floor(x float64) float64 | 返回不大于 x 的最小整数(的浮点值) |
func Trunc(x float64) float64 | 返回 x 的整数部分(的浮点值) |
func Abs(x float64) float64 | 返回 x 的绝对值 |
func Min(x, y float64) float64 | 返回 x y 中的较小值 |
func Max(x, y float64) float64 | 返回 x y 中的较大值 |
func Dim(x, y float64) float64 | 返回 x-y 和 0 中的较大值 |
func Mod(x, y float64) float64 | 取余运算 |
func Sqrt(x float64) float64 | 返回 x 的二次方根 |
func Cbrt(x float64) float64 | 返回 x 的三次方根 |
func Hypot(p, q float64) float64 | 返回 Sqrt(p*p + q*q) |
func Pow(x, y float64) float64 | 返回 x 的 y 次幂 |
func Sin(x float64) float64 | 求正弦 |
func Cos(x float64) float64 | 求余弦 |
func Tanc(x float64) float64 | 求正切 |
func Log(x float64) float64 | 求自然对数 |
func Log2(x float64) float64 | 求2为底的对数 |
func Log10(x float64) float64 | 求10为底的对数 |
5. 随机数
"math/rand" 包实现了伪随机数生成器,能够生成整型和浮点型的随机数。使用随机数生成器需要放入种子。可以使用 Seed() 函数生成一个不确定的种子放入随机数生成器,这样每次运行随机数生成器都会生成不同的序列。如果没有在随机数生成器中放入种子,则默认使用具有确定性状态的种子,此时可以理解为种子的值是一个常数1,即Seed(1)。
方法 | 功能 |
func NewSoource(sees int64) Source | 使用给定的种子创建一个伪随机资源 |
func New(src Source) *Rand | 返回一个使用src产生的随机数来生成其他各种分布的随机数值的 *Rand |
func (r *Rand)Seed(seed int64) | 使用给定的seed来初始化生成器到一个确定的状态 |
func (r *Rand)Int() int | 返回一个非负的伪随机 int 值 |
func (r *Rand)Intn(n int) int | 返回一个取值范围在 [0,n]之间的伪随机 int 值,如果n <= 0会panic |
func (r *Rand)Float64() float64 | 返回一个范围在 [0.0, 1.0]之间的伪随机 float64 值 |
动态随机数种子生成随机资源,产生随机对象来获取随机数:
se := rand.NewSource(time.Now().UnixNano())
r := rand.New(se)
a := r.Intn(100)
rand.Seed(time.Now().UnixNano())
b := rand.Float64()
6. regexp包
1.检查正则表达式与字节数组是否匹配。更复杂的查询建议使用Compile()和完整的Regexp接口。
func Match(pattern string, b []byte) (matched bool, err error)
2.检查正则表达式与字符串是否匹配。
func MatchString(pattern string, s string) (matched bool, err error)
3.将正则表达式字符串编译成正则表达式对象(Regexp)
func Compile(exp string) (*Regexp, error)
4.MustCompile()用法同Compile(),但是不返回error。如果表达式不能被解析就会panic。
func MustCompile(exp string) *Regexp
5.判断Regexp正则对象是否与给定的字节数组匹配。
func (re *Regexp)Match(b []byte) bool
6.判断Regexp正则对象是否与给定的字符串匹配。
func (re *Regexp)MatchString(s string) bool
7.ReplaceAll()将src中符合正则表达式的部分全部替换成指定内容。
func (re *Regexp)ReplaceAll(src, repl []byte) []byte
8.将字符串按照正则表达式分割成子字符串组成的切片。如果切片长度超过指定参数n,则不再分割。
func (re *Regexp)Split(s string, n int) []string
7. json包
Go的标准包encoding/json支持json。
json包是通过反射机制来实现编解码的,因此结构体必须导出所转换的字段,没有导出的字段不会被json包解析。
7.1 编码
Marshal() //无空白和缩进,不便于阅读
MarshalIndent() //可设置空白和缩进,便于阅读
注意:
1.JSON对象只支持string作为key,所以要编码一个map,必须是map[string]T这种类型(T是Go语言中的任意类型)。
2.channel、complex 和 function 是不能被编码成JSON的。
3.指针在编码的时候会输出指针指向的内容,而空指针会输出null。
7.2 解码
解析时不区分大小写。
func Unmarshal(data []byte, v interface{}) error