【愚公系列】2022 年 7 月 Go 教学课程 012- 强制类型转换
前言
go 语言中分为类型转换(type conversion)、类型断言(type assertion)和指针类型转换。
一、类型断言
可见自动推断 a 是 int 类型。
二、类型转换
类型转换属于一种类型的变量转换为另外一种数据类型的变量。
代码段中的 float32(b) 就是第二种强制类型转换, 普通变量类型 int,float,string 都可以使用 type (a)这种形式来进行强制类型转换。
这种类型转换是通过构造类的构造方法创建一个新类型对象。
三、指针类型转换
指针的强制类型转换需要用到 unsafe 包中的函数实现。
总结
golang 中的强制类型转换有三种语法形式,分别是 类型断言,类型转换,指针类型转换,语法上类型断言和指针类型转换和 Java 比较像。
注意点:低类型转换为高类型,保证精度。高类型转换为抵类型会丢失精度。具体的进度请看下面这张表。
类型 |名称| 长度| 零值| 说明
-------- | -----| -----| -----| -----
bool |布尔类型| 1 |false |其值不为真即为假,不可以用数字代表 true 或 false
byte |字节型 |1 |0 |uint8 别名
rune |字符类型| 4 |0 |专用于存储 unicode 编码,等价于 uint32
int, uint |整型 |4 或 8| 0| 有符号 32 位或无符号 64 位
int8 |整型| 1 |0 |-128~ 127,
uint8 | 整型 |1 |0 |0~ 255
int16 |整型| 2 |0| -32768 ~ 32767,
uint16| 整型 |2 |0 |0 ~ 65535
int32 |整型| 4 |0| -2147483648 到 2147483647
uint32 |整型 |4 |0 |0 到 4294967295(42 亿)
int64| 整型 |8 |0 |-9223372036854775808 到 9223372036854775807
uint64 |整型| 8 |0 |0 到 18446744073709551615 ( 1844 京)
float32 |浮点型 |4 |0.0| 小数位精确到 7 位
float64 |浮点型| 8 |0.0 |小数位精确到 15 位
complex64 |复数类型| 8 ||
complex128 |复数类型 |16 || 64 位实数和虚数
uintptr |整型| 4 或 8 || 足以存储指针的 uint32 或 uint64 整数
strina | 字符串 || "” |utf-8 字符串
版权声明: 本文为 InfoQ 作者【愚公搬代码】的原创文章。
原文链接:【http://xie.infoq.cn/article/6927153caef4219233a7dbe84】。文章转载请联系作者。
评论