目录
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
网友评论