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类型转换内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!