007 Golang类型转换与type关键词

视频: https://www.bilibili.com/video/BV18h411C7Yz/ 抛砖引玉的两个例子 将int的值与float64的值相加,下面程序能够正常执行吗? 编译失败无法执行: invalid operation: a + b (mismatched types int and float64) 提示非法的操作,不能将int与float64相加 @_@ 用int的值初始化float64的变量,下面的程序能够正常执行吗? 编译失败无法执行: cannot use a (type int) as type float64 in assignment 提示不能用int作为float64进行赋值 =。= Go语言不支持自动类型转换(Automatic Type Conversion)或隐式类型转换(Implicit Type Conversion) 所以要想上面两个例子成功执行,在此之前我们必须将两个不同类型的变量转为同类型的变量,这时就需要显式类型转换 显式类型转换 显式类型转换(Explicit Type Conversion),其实从英文来看就很好理解,意思是明确的类型转换 表达式T(v)表示将值v转换成类型T的值 利用显式类型转换修正上面两个例子: [1]: 第一个Println处表示将变量a转成float64类型后再与变量b相加 第一个Println处表示将变量b转成int类型后再与变量a相加(注意这时会有精度损失,3.14的小数部份没了) [2]: 类型别名 就像小时候长辈会给我们取小名,长大学了英语喜欢给自己取个英文名一样,这些就是别名,实际上指代的还是我们这个人 在Go中,类型也可以取别名(Type Alias),使用type 类型新名 = 原类型名这样的语法 注意上面声明变量a时,类型是myint,运行看看有没有问题~ 我们的程序可以顺利执行,a + b是ok的,说明了a与b是同一个类型的变量(所以不需要进行类型转换即可相加) Go语言的基本数据类型定义在builtin这个内置包里,在这个包里定义了这样的两个类型别名: type byte = uint8 type rune = int32 即byte就是uint8,rune就是int32...

2021年02月05日 · nbody1996