阅读 256

golang强制类型转换和类型断言

这篇文章主要介绍了详情介绍golang类型转换问题,分别由介绍类型断言和类型转换,这两者都是不同的概念,下面文章围绕类型断言和类型转换的相关资料展开文章的详细内容,需要的朋友可以参考以下

目录
  • 1.强制类型转换

  • 2.类型断言

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强制类型转换和类型断言的文章就介绍到这了

原文链接:https://blog.csdn.net/weixin_41922289/article/details/117830987


文章分类
代码人生
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐