我是靠谱客的博主 怡然斑马,这篇文章主要介绍golang强制类型转换和类型断言,现在分享给大家,希望可以做个参考。

1.强制类型转换

golang是强类型语言,但是和c++,Java不太一样的是,go中没有隐式类型转换,go中的类型转换只有:强制类型转换和断言

在java中:

复制代码
1
2
3
4
5
public static void main(String[] args){ int a = 1; double b = 1.0; System.out.println(a * b); }

在java中这样是没有问题,编译器隐式的把a向上转为double类型

但是在go中是会报错的:

需要进行强制类型转换:

复制代码
1
2
3
4
5
func Test() { var a int = 1 var b float32 = 1.0 fmt.Println(float32(a) * b) }

go中的强制类型转换为:

复制代码
1
type(v)

普通变量类型int,float,string 都可以使用 type (a)这种形式来进行强制类型转换,

比如:

复制代码
1
2
3
4
var a int32 = 10 var b int64 = int64(a) var c float32 = 12.3 var d float64 =float64(c)

指针的强制类型转换需要用到unsafe包中的函数实现

复制代码
1
2
3
4
5
6
func Test() { var a int =10 var b *int =&a var c *int64 = (*int64)(unsafe.Pointer(b)) fmt.Println(*c) }

2.类型断言

go中的类型判断则是判断一个变量是否属于某一种类型

复制代码
1
2
3
4
5
6
7
func Test() { var a interface{} = 10 _,isInt := a.(int) // 进行类型的断言的变量必须是空接口 if isInt{ fmt.Println(a) } }

形式如下:

复制代码
1
interface{}.(type)

到此这篇关于golang强制类型转换和类型断言的文章就介绍到这了,更多相关golang类型转换内容请搜索靠谱客以前的文章或继续浏览下面的相关文章希望大家以后多多支持靠谱客!

最后

以上就是怡然斑马最近收集整理的关于golang强制类型转换和类型断言的全部内容,更多相关golang强制类型转换和类型断言内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(172)

评论列表共有 0 条评论

立即
投稿
返回
顶部