数据类型转换的格式
1.T(表达式)
- 采用数据类型前置加括号的方式进行类型转换。T表示要转换的类型;表达式包括变量、数值、函数返回值等
- 类型转换时,需要考虑采用两种类型之间的关系和范围,是否会发生数值截断
- 布尔型无法与其他类型转换
2.float与int之间的转换
- float转int会导致精度损失
3.int转string
- 相当于是 byte 或 rune 转string
- 该int 值是ASCII吗的编号或者Unicode字符集的编号,转成 string 就是讲根据字符集,将对应编号的字符查找出来
- 当该值超过Unicode编号的返回,则转成的字符串显示为乱码
- 例如,当19968转string,就是“一”
【备注】
ASCII字符集中数字的10进制范围是 [30 - 39]
ASCII字符集中大写字母的10进制范围是 [65 - 90]
ASCII字符集中小写字母的10进制范围是 [97 - 122]
Unicode字符集中汉字的范围是 [4e00 - 9fa5],10进制的范围是[19968 - 40869]
package main
import "fmt"
func main() {
/* 语文成绩是 90,英语成绩是 80.5,计算平均值 */
chinese := 90
english := 80.5
// float转int
avg := (chinese + int(english)) / 2
fmt.Println("平均值:" , avg)
// 平均值: 85
// int转float
avg2 := (float64(chinese) + english) / 2
fmt.Println("平均值2:" , avg2)
// 平均值2: 85.25
// 布尔型不能转换为其他
// flag := true
// int(flag)
// 字符串不能转为int
// str := "Joe"
// int(str)
result := string(chinese)
fmt.Println("语文成绩转string,结果为:", result)
// 语文成绩转string,结果为: Z
x := 'Z'
fmt.Println("字符Z转string,结果为:" , string(x))
// 字符Z转string,结果为: Z
X := '一'
fmt.Println("字符 一 转string,结果为:" , string(X))
// 字符 一 转string,结果为: 一
XX := 19968
fmt.Println("数值19968 转string,结果为:" , string(XX))
// 数值19968 转string,结果为: 一
}
常量声明方式
1.相对于变量,常量是恒定不变的值,例如圆周率
- 常量是一个简单值的标识符,在程序运行时,不会被修改
2.常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型
3.常量的定义格式:
- const 标识符 [类型] = 值
- 可以省略类型说明符 [type],因为编译器可以根据变量的值来自动推断其类型
- 显示类型定义: const B string = "Joe"
- 隐式类型定义: const C = "Joe"
4.多个相同类型的声明可以简写为:
- const WIDTH , HEIGHT = value1, value2
5.常量定义未被使用,不会再编译时出错
常量用于枚举(常量组)
例如如下格式:
const (
Unkonwn = 0
Female = 1
Male = 2
)
数字0、1、2分别表示未知性别、女性、男性
常量组中如果不指定类型和初始值,则与上一行非空常量的值相同
const (
a = 10
b
c
)
打印 a b c ,输出 :10 10 10
iota
1.iota ,特殊常量值,是一个系统定义的可以被编译器修改的常量值。iota只能出现在常量中。
2.在每一个const 关键字出现时,被重置为0,然后每出现一个常量,iota所代表的数值会自动增加1。iota可以理解成常量组中的常量的计数器,不论该常量的值是什么,只要有一个常量,那么iota就加1
3.iota可以被用作枚举值
package main
import "fmt"
func main() {
const (
L = iota
M = iota
N = iota
)
fmt.Println(L, M, N)
// 输出:0 1 2
const (
L1 = iota
M1
N1
)
fmt.Println(L1, M1, N1)
// 输出:0 1 2
const (
L2 = "Joe"
M2 = iota
N2
)
fmt.Println(L2, M2, N2)
// 输出:Joe 1 2
const (
i = 1 << iota // 1 * 2^iota
j = 3 << iota // 3 * 2^iota
k
l
)
fmt.Println(i, j, k ,l)
// 输出:1 6 12 24
const (
a1 = '一'
b1
c1 = iota
d1
)
fmt.Println(a1, b1, c1 ,d1)
// 输出:19968 19968 2 3
const name = iota
fmt.Println("name=", name)
// 输出:name= 0
}
欢迎关注我的公众号~ 搜索公众号: 翻身码农把歌唱 或者 扫描下方二维码:
