Golang中如何实现强制类型转换和类型断言
导读:这篇文章主要给大家介绍“Golang中如何实现强制类型转换和类型断言”的相关知识,下文通过实际案例向大家展示操作过程,内容简单清晰,易于学习,有这方面学习需要的朋友可以参考,希望这篇“Golang中如何实现强制类型转换和类型断言”文章能对大...
这篇文章主要给大家介绍“Golang中如何实现强制类型转换和类型断言”的相关知识,下文通过实际案例向大家展示操作过程,内容简单清晰,易于学习,有这方面学习需要的朋友可以参考,希望这篇“Golang中如何实现强制类型转换和类型断言”文章能对大家有所帮助。
1.强制类型转换
golang是强类型语言,但是和c++,Java不太一样的是,go中没有隐式类型转换,go中的类型转换只有:强制类型转换和断言
在java中:
public static void main(String[] args){ int a = 1; double b = 1.0; System.out.println(a * b); }
在java中这样是没有问题,编译器隐式的把a向上转为double
类型
但是在go中是会报错的:
需要进行强制类型转换:
func Test() { var a int = 1 var b float32 = 1.0 fmt.Println(float32(a) * b) }
go中的强制类型转换为:
type(v)
普通变量类型int
,float
,string
都可以使用 type (a)
这种形式来进行强制类型转换,
比如:
var a int32 = 10 var b int64 = int64(a) var c float32 = 12.3 var d float64 =float64(c)
指针的强制类型转换需要用到unsafe
包中的函数实现
func Test() { var a int =10 var b *int =& a var c *int64 = (*int64)(unsafe.Pointer(b)) fmt.Println(*c) }
2.类型断言
go中的类型判断则是判断一个变量是否属于某一种类型
func Test() { var a interface{ } = 10 _,isInt := a.(int) // 进行类型的断言的变量必须是空接口 if isInt{ fmt.Println(a) } }
形式如下:
interface{ } .(type)
感谢各位的阅读,以上就是“Golang中如何实现强制类型转换和类型断言”的内容了,通过以上内容的阐述,相信大家对Golang中如何实现强制类型转换和类型断言已经有了进一步的了解,如果想要了解更多相关的内容,欢迎关注网络,网络将为大家推送更多相关知识点的文章。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Golang中如何实现强制类型转换和类型断言
本文地址: https://pptw.com/jishu/653477.html