1. [strconv]
    2. strconv.IntSize # 获得操作系统平台下INT类型所占的位数
    3. [类型转换]
    4. traInt, _ := strconv.Atoi("4") # 字符串, 转化成Int类型
    5. traFloat, _ := strconv.ParseFloat("4", 10) # float64
    6. traStr := strconv.Itoa(4) # Int类型转string类型
    7. [字符串比较]
    8. com := strings.Compare("str1", "str2") # 0 相等、其他不相等
    9. [包含]
    10. var isCon bool = strings.Contains("str1", "str2") # str1是否含有,str2 。含有, true
    11. [查找位置]
    12. var theIndex int = strings.Index("str1", "str2") # str2在str1的那个位置, -1 不含有
    13. lastIndex := strings.LastIndex(str01, "o") # 最后出现的索引
    14. strings.Count("str1", "str2") # 统计字符串出现的次数
    15. strings.Repeat("world ", 10) # 重复字符串, 返回生成的重复字符串
    16. strings.Replace(str03, "/", "**", -1) # 替换字符串
    17. strings.Trim(str03, "/") # 删除开头结尾
    18. strings.TrimLeft(str03, "/") # 删除左边
    19. strings.TrimRight(str03, "/")
    20. strings.TrimSpace(" hello hao hao hao ") # 删除空格
    21. strings.Title(str07)
    22. strings.ToLower(" Hello Hao Hao Hao")
    23. strings.ToUpper(str07)
    24. strings.HasPrefix("Gopher", "Go") # 匹配前缀
    25. strings.HasSuffix("Amigo", "go") # 匹配后缀
    26. fieldsSlece := strings.Fields(fieldsStr) # 根据空白符分割,不限定中间间隔几个空白符
    27. strings.Split("q,w,e,r,t,y,", ",") # 根据特定字符分割
    28. strings.Join(fieldsSlece, ",") # 拼接
    [字符串比较]
    
    func Compare(a, b string) int # Compare比较字符串的速度比字符串内建的比较要快
    
    [字符串查找]
    
    // 判断给定字符串s中是否包含子串substr, 找到返回true, 找不到返回false
    func Contains(s, substr string) bool
    
    // 在字符串s中查找sep所在的位置, 返回位置值, 找不到返回-1
    func Index(s, sep string) int
    
    // 统计给定子串sep的出现次数, sep为空时, 返回1 + 字符串的长度
    func Count(s, sep string) int
    
    [字符串重复]
    
    // 重复s字符串count次, 最后返回新生成的重复的字符串
    func Repeat(s string, count int) string
    
    [字符串替换]
    
    // 在s字符串中, 把old字符串替换为new字符串,n表示替换的次数,小于0表示全部替换
    func Replace(s, old, new string, n int) string
    
    [字符串删除]
    
    // 删除在s字符串的头部和尾部中由cutset指定的字符, 并返回删除后的字符串
    func Trim(s string, cutset string) string
    // 删除首尾的空格
    strings.Trim(" !!! Achtung! Achtung! !!! ", "! ")
    // 删除空白符
    strings.TrimSpace(" \t\n a lone gopher \n\t\r\n")
    
    [字符串大小写转换]
    
    // 给定字符串转换为英文标题的首字母大写的格式(不能正确处理unicode标点)
    func Title(s string) string
    // 所有字母转换为小写
    func ToLower(s string) string
    // 所有字母转换为大写
    func ToUpper(s string) string
    
    [字符串前缀后缀]
    
    // 判断字符串是否包含前缀prefix
    func HasPrefix(s, prefix string) bool
    // 判断字符串是否包含后缀suffix, 
    func HasSuffix(s, suffix string) bool
    
    [字符串分割]
    
    // 把字符串按照sep进行分割, 返回slice(类似于python中的split)
    func Split(s, sep string) []string
    // 去除字符串s中的空格符, 并按照空格(可以是一个或者多个空格)分割字符串, 返回slice
    func Fields(s string) []string
    // 当字符串中字符c满足函数f(c)时, 就进行字符串s的分割
    func FieldsFunc(s string, f func(rune) bool) []string
    
    [字符串拼接]
    
    直接用+=操作符, 直接将多个字符串拼接. 最直观的方法, 不过当数据量非常大时用这种拼接访求是非常低效的
    
    用字符串切片([]string)装载所有要拼接的字符串,最后使用strings.Join()函数一次性将所有字符串拼接起来。在数据量非常大时,这种方法的效率也还可以的。
    
    利用Buffer(Buffer是一个实现了读写方法的可变大小的字节缓冲),将所有的字符串都写入到一个Buffer变量中,最后再统一输出
    
    // bytes.Buffer的方法, 将给定字符串追加(append)到Buffer
    func (b *Buffer) WriteString(s string) (n int, err error)
    // 字符串拼接, 把slice通过给定的sep连接成一个字符串
    func Join(a []string, sep string) string
    
    // 字符串拼接效率
    package main
    
    import (
        "bytes"
        "fmt"
        "strings"
        "time"
    )
    
    func main() {
        var buffer bytes.Buffer
        s := time.Now()
        for i := 0; i < 100000; i++ {
            buffer.WriteString("test is here\n")
        }
        buffer.String() // 拼接结果
        e := time.Now()
        fmt.Println("taked time is ", e.Sub(s).Seconds())
        s = time.Now()
        str := ""
        for i := 0; i < 100000; i++ {
            str += "test is here\n"
        }
        e = time.Now()
        fmt.Println("taked time is ", e.Sub(s).Seconds())
        s = time.Now()
        var sl []string
        for i := 0; i < 100000; i++ {
            sl = append(sl, "test is here\n")
        }
        strings.Join(sl, "")
        e = time.Now()
        fmt.Println("taked time is", e.Sub(s).Seconds())
    }
    
    [strconv - 字符串转换]
    
    Append*函数表示将给定的类型(如bool, int等)转换为字符串后, 添加在现有的字节数组中[]byte
    Format*函数将给定的类型变量转换为string返回
    Parse*函数将字符串转换为其他类型
    
    // 字符串转整数
    func Atoi(s string) (i int, err error)
    
    // 整数值换字符串
    func Itoa(i int) string
    
    str := make([]byte, 0, 100)
    str = strconv.AppendInt(str, 123, 10)  // 10用来表示进制, 此处为10进制
    str = strconv.AppendBool(str, false)
    str = strconv.AppendQuote(str, "andrew")
    str = strconv.AppendQuoteRune(str, '刘')
    fmt.Println(string(str))  // 123false"andrew"'刘'
    s := strconv.FormatBool(true)
    fmt.Printf("%T, %v\n", s, s)  // string, true
    v := 3.1415926535
    s32 := strconv.FormatFloat(v, 'E', -1, 32)
    fmt.Printf("%T, %v\n", s32, s32)  // string, 3.1415927E+00
    s10 := strconv.FormatInt(-44, 10)
    fmt.Printf("%T, %v\n", s10, s10)  // string, -44
    num := strconv.Itoa(1234)
    fmt.Printf("%T, %v\n", s, s)  // int, 1023
    fmt.Printf("%T, %v\n", num, num)  // string, 1234