一.字符串概述
- 字符串是一段不可变的字符序列.内容是任意内容,可以是一段文字也可以是一串数字,但是字符串类型数字不能进行数学运算,必须转换成整型或浮点型
- 字符串类型关键字:
string
- 创建字符串类型变量
1var s string = "hello,world"
2s1 := "hello,world"
- 字符串类型的值使用双引号
""扩上,内容支持转义字符串.两侧使用反单引号时原格式输出
1func main() {
2 a := "hello\tworld"
3 b := `hello\tworld`
4 fmt.Println(a) //输出:hello world
5 fmt.Println(b) //输出:hello\tworld
6}
二.字符串和数值转换
- 包
strconv提供了字符串和其他类型相互转换的函数,下面以字符串和数值类型转换为例
int和string相互转换
1package main
2
3import (
4 "fmt"
5 "strconv"
6)
7
8func main() {
9 s := "11"
10 /*
11 第一个参数:需要转换的字符串变量
12 第二个参数:这个数字是几进制,常用取值:2,8,10,16
13 第三个参数:认为这个数字的整数类型.可取值:0,8,16,32,64.
14 但是由于方法最后返回值是int64,所以第三个参数无论设置什么最终结果都是int64
15 */
16 i, _ := strconv.ParseInt(s, 10, 8)
17 fmt.Println(i)
18 fmt.Printf("%T\n", i)
19
20 //简单写法,相当于strconv.ParseInt(s,10,64)
21 i1, _ := strconv.Atoi(s)
22 fmt.Println(i1)
23}
1package main
2
3import (
4 "fmt"
5 "strconv"
6)
7
8func main() {
9 i := 11
10 /*
11 第一个参数:必须是int64类型
12 第二个参数:进制数
13 */
14 s := strconv.FormatInt(int64(i), 10)
15 fmt.Println(s) //输出:11
16 fmt.Printf("%T\n", s) //输出:string
17
18 /*
19 由于平时常用int,且使用短变量时整数默认是int类型
20 所以下面方式较常用,把int转换为string
21 */
22 s1 := strconv.Itoa(i)
23 fmt.Println(s1) //输出:11
24 fmt.Printf("%T", s1) //输出:string
25}
1package main
2
3import (
4 "fmt"
5 "strconv"
6)
7
8func main() {
9 s := "1.5"
10 /*
11 把字符串转换为指定类型
12 第一个参数:字符串
13 第二个参数:可取值为32和64,分别表示float32和float64
14 返回值是float64
15 */
16 f, _ := strconv.ParseFloat(s, 64)
17 fmt.Println(f)
18 fmt.Printf("%T", f)
19}
1package main
2
3import (
4 "fmt"
5 "strconv"
6)
7
8func main() {
9 f := 1.5
10 /*
11 把浮点型转换为字符串类型
12 第一个参数:浮点型变量
13 第二个参数:
14 'f'(-ddd.dddd)
15 'b'(-ddddp±ddd,指数为二进制)
16 'e'(-d.dddde±dd,十进制指数)
17 'E'(-d.ddddE±dd,十进制指数)
18 'g'(指数很大时用'e'格式,否则'f'格式)
19 'G'(指数很大时用'E'格式,否则'f'格式)
20 第三个参数:小数点精度,精度不够使用0补全,超出精度四舍五入
21 第四个参数:浮点型变量类型,64表示float64,32表示float32
22 */
23 s := strconv.FormatFloat(f, 'g', 5, 64)
24
25 fmt.Println(s)
26}
27