美文网首页
GO基础1-类型

GO基础1-类型

作者: 一直吃不饱 | 来源:发表于2020-12-03 13:48 被阅读0次

    目录

    1.常量
    2.不丢失精度计算
    3.字符串的常用操作
    4.字符
    5.修改字符串
    6.转换类型

    1.常量
    //import "unsafe"
    const (
        A = iota //A=0
        B        //B=1
        C        //c=2
    )
    fmt.Println("字节大小:", unsafe.Sizeof(A)) // PS:无法查看string类型所占用存储空间,改用len
    
    2.不丢失精度计算
    //import "github.com/shopspring/decimal"
    var num1 float64 = 3.1
    var num2 float64 = 4.2
    fmt.Printf("保留2位小数:%.2f\n", num1)
    // 加法:Add, 减法:Sub, 乘法:Mul, 除法:Div
    d1 := decimal.NewFromFloat(num1).Add(decimal.NewFromFloat(num2))
    
    3.字符串的常用操作
    方法 介绍
    len(str) 求长度
    + 或 fmt.Sprintf 拼接字符串
    strings.Split 分割
    strings.Contains 判断是否包含
    strings.HasPrefix(), strings.HasSuffix() 前缀/后缀判断
    strings.Index, strings.LastIndex 子串出现的位置
    strings.Join(a[]string,sep,string) join操作
    /*字段长度  输出:2*/
    str1 := "10"
    fmt.Println(len(str1))  
    
    /*拼接  输出:123456*/
    str2 := "123"
    str3 := "456"
    fmt.Println(fmt.Sprintf("%v%v", str2, str3)) 
    
    /*分割  输出:[123 456 789]*/
    var str4 = "123-456-789"
    arr1 := strings.Split(str4, "-")
    /*把切片连接成字符串  输出:123*456*789*/
    arr2 := strings.Join(arr1, "*")
    
    /*是否包含  输出:true*/
    str5 := "123456"
    str6 := "123"
    fmt.Println(strings.Contains(str5, str6))
    
    /*判断前后缀  输出:true and true*/
    str7 := "2020Y-09M-14D"
    str8 := "2020"
    str9 := "D"
    fmt.Println(strings.HasPrefix(str7, str8), "and" ,strings.HasSuffix(str7, str9))
    
    /*判断位置 输出:3 and 8*/
    str10 := "This is str"
    str11 := "s"
    fmt.Println(strings.Index(str10, str11), "and" ,strings.LastIndex(str10, str11))
    
    /*拼接  输出:I@love@beijing*/
    str12 := strings.Join([]string{"I", "love", "beijing"}, "@")
    
    4.字符
    /*英文ASCII编码,汉字UTF-8编码*/
    var a = 'a'
    var b = '好'
    fmt.Printf("%v\n", a) //97
    fmt.Printf("%v\n", b) //22909
    
    //循环遍历输出字符串里的字符
    s := "golang"
    for i := 0; i < len(s); i++ {
      fmt.Printf("%v(%c)", s[i], s[i]) //byte类型,遍历英文
    }
    y := "你好 golang"
    for _, v := range y {
       fmt.Printf("%v(%c)", v, v) // rune类型,遍历英文与汉字
    }
    
    5.修改字符串
    /*输出:pig*/
    s1 := "big"
    byteStr := []byte(s1)
    byteStr[0] = 'p'
    fmt.Println(string(byteStr))
    // 汉字
    s2 := "你好"
    runeStr := []rune(s2)
    runeStr[0] = '我'
    fmt.Println(string(runeStr))
    
    6.转换类型
    /* int 转换 strings 输出:20 strings*/ 
    /* float64:%f bool:%t byte:%c*/
    var i int = 20
    str1 := fmt.Sprintf("%d", i)
    fmt.Printf("%v,%T\n", str1, str1)
    
    /* 通过 import "strconv " */ 
    var i int = 20
    str1 := strconv.FormatInt(int64(i), 10)
    fmt.Printf("%v,%T\n", str1, str1)
    /*转化 float */
    //参数1:要转换的值
    //参数2:格式化类型 'f' (-ddd.dddd)
    //                'b' (-ddddp±ddd, 指数为二进制),
    //                'e' (-d.dddde±dd, 十进制指数),
    //                'E' (-d.ddddE±dd, 十进制指数),
    //                'g' (指数很大时用 'e' 格式,否则 'e' 格式),
    //                'G' (指数很大时用 'G' 格式,否则 'f' 格式),
    //参数3:保留的小树点 -1(不对小数点格式化)
    //参数4:格式化的类型 传入 64 32
    var f float32 = 20.231313
    str2 := strconv.FormatFloat(float64(f), 'f', 4 ,32) // 20.2313
    // strings 转化整型
    str3 := "123456"
    str4, _ := strconv.ParseInt(str3, 10, 64) // 参数1:stringss数据;参数2:进制;参数3:位数 32 64 16
    // strings 转化浮点型
    str5, _ := strconv.ParseFloat(str3, 64) // 参数1:stringss数据;参数2:位数 32 64
    

    相关文章

      网友评论

          本文标题:GO基础1-类型

          本文链接:https://www.haomeiwen.com/subject/burmwktx.html