golang类型转换问题

golang类型转换问题

强制类型转换

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)
}

类型断言

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

func Test()  {
	var a interface{} = 10
	_,isInt := a.(int)	// 进行类型的断言的变量必须是空接口
	if isInt{
		fmt.Println(a)
	}
}

形式如下:

interface{}.(type)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值