类型转换
Go语言和C语言不一样,Go语言没有隐式转换,只有显示转换
格式和C语言一样
Go语言类型转换被用于转换的类型一般用于除了bool和字符串类型的类型转换
注意点:
- 不能对常量进行转换
- Go语言中没有非零即真的概念,不能将bool转换为整型
Go语言赋值特殊性
由于Go语言没有隐式转换,所以给变量赋值时,必须等号两边数值类型完全相同才可以赋值(函数接收参数时尤其注意参数类型,必须完全完全完全完全相同)
注意点:
byte --> uint8 和 rune --> int32 是能够直接赋值的特殊情况
字符串转基本数据类型
strconv.ParseXxx()
strconv.Atoi()
-
strconv.ParseInt(s string,base int,bitSize int)(i int64,err error)
- 第一个参数: 需要转换的字符串
- 第二个参数: 字符串转换的整数是多少进制的
- 第三个参数: 转换为多少位有效位数的整数
- 返回值:
- 第一个返回值是一个int64类型的整数-----转换成功后的整数
- 第二个返回值:转换成功返回nil,不成功返回的不是nil
str := "9"
num,err := strconv.ParseInt(str, 10, 1)
fmt.Printf("%d\n",num) //9
- strconv.ParseFloat(s string,bitSize int)(i Float64,err error)
- 第一个参数: 需要转换的字符串
- 第二个参数: 转换为多少位小数
- 返回值:
- 第一个返回值是一个Float64类型的小数-----转换成功后的小数
- 第二个返回值:转换成功返回nil,不成功返回的不是nil
str := "9.14"
num,err := strconv.ParseFloat(str, 1)
fmt.Printf("%f\n",num) //9.1
- strconv.Atoi(s string)(int ,error)
- 第一个参数: 需要转换的字符串
- 返回值:
- 第一个返回值是返回成功后的整数
- 第二个返回值:转换成功返回nil,不成功返回的不是nil
str := "9"
num,err := strconv.Atoi(str)
fmt.Printf("%f\n",num) //9
基本数据类型转字符串
- strconv.FormatXxx()
- strconv.Itoa()
-
strconv.FormatInt(i int64,base int) (s string)
- 第一个参数: 需要转换的整数, 必须是int64类型的(不是int64需要进行强制类型转换)
- 第二个参数: 按多少进制转换成字符串
- 返回值: 转换成的字符串
-
strconv.FormatFloat(f float64,fmt byte, prec int, bitSize int) (s string)
- 第一个参数: 需要转换的小数, 必须是float64类型的
- 第二个参数: 按照什么格式转换 'f'小数格式 'e' 指数的格式
- 第三个参数: 保留多少位小数, 传入-1按照原始类型的精度保留
- 第四个参数: 原始类型的标志 float32 --> 32 float64 --> 64
strconv.Itoa(i int)(s string)
- 第一个参数: 需要转换的整数, 必须是int类型的
- 返回值:转换成的字符串