目录
- 1.强制类型转换
- 2.类型断言
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)
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

评论(0)