前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【愚公系列】2022年7月 Go教学课程 012-强制类型转换

【愚公系列】2022年7月 Go教学课程 012-强制类型转换

作者头像
愚公搬代码
发布2022-08-01 08:45:00
2140
发布2022-08-01 08:45:00
举报
文章被收录于专栏:历史专栏

文章目录


前言

go语言中分为类型转换(type conversion)、类型断言(type assertion)和指针类型转换。

一、类型断言

代码语言:javascript
复制
package main
import "fmt"
func main() {
	var a interface{} =10
	t,ok:= a.(int)
	if ok{
		fmt.Println("int",t)
	}
	t2,ok:= a.(float32)
	if ok{
		fmt.Println("float32",t2)
	}
}
在这里插入图片描述
在这里插入图片描述

可见自动推断 a 是 int 类型。

二、类型转换

类型转换属于一种类型的变量转换为另外一种数据类型的变量。

代码语言:javascript
复制
package main
import "fmt"
func main() {
	var a float32 = 5.6
	var b int = 10
	fmt.Println (a * float32(b))
}
在这里插入图片描述
在这里插入图片描述

代码段中的 float32(b) 就是第二种强制类型转换, 普通变量类型int,float,string 都可以使用 type (a)这种形式来进行强制类型转换。

这种类型转换是通过构造类的构造方法创建一个新类型对象。

三、指针类型转换

代码语言:javascript
复制
package main
import "unsafe"
import "fmt"
func main() {
	var a int =10
	var b *int =&a
	var c *int64 = (*int64)(unsafe.Pointer(b))
	fmt.Println(*c)
}
在这里插入图片描述
在这里插入图片描述

指针的强制类型转换需要用到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字符串

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/07/17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 前言
  • 一、类型断言
  • 二、类型转换
  • 三、指针类型转换
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档