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

 更新时间:2022年01月25日 09:26:44   作者:Kevin_cai09  
这篇文章主要介绍了详情介绍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类型转换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Go Java算法之Excel表列名称示例详解

    Go Java算法之Excel表列名称示例详解

    这篇文章主要为大家介绍了Go Java算法之Excel表列名称示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Go语言中的Array、Slice、Map和Set使用详解

    Go语言中的Array、Slice、Map和Set使用详解

    这篇文章主要介绍了Go语言中的Array、Slice、Map和Set使用详解,本文给出了它们的创建、使用、多维等代码实例,需要的朋友可以参考下
    2014-10-10
  • Golang接口型函数使用小结

    Golang接口型函数使用小结

    接口函数指的是用函数实现接口,这样在调用的时候就会非常简便,这种方式适用于只有一个函数的接口,这里以迭代一个map为例,演示这一实现的技巧,对Golang接口型函数使用知识感兴趣的朋友一起看看吧
    2022-06-06
  • go内存缓存BigCache实现BytesQueue源码解读

    go内存缓存BigCache实现BytesQueue源码解读

    这篇文章主要为大家介绍了go内存缓存BigCache实现BytesQueue源码解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • Go 通过结构struct实现接口interface的问题

    Go 通过结构struct实现接口interface的问题

    这篇文章主要介绍了Go 通过结构struct实现接口interface的问题,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-10-10
  • GoLang中的timer定时器实现原理分析

    GoLang中的timer定时器实现原理分析

    Timer中对外暴露的只有一个channel,这个 channel也是定时器的核心。当计时结束时,Timer会发送值到channel中,外部环境在这个 channel 收到值的时候,就代表计时器超时了,可与select搭配执行一些超时逻辑
    2023-02-02
  • golang 连接mongoDB的方法示例

    golang 连接mongoDB的方法示例

    这篇文章主要介绍了golang 连接mongoDB的方法示例,详细的介绍了golang的基础知识和连接mongoDB的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • Go语言io pipe源码分析详情

    Go语言io pipe源码分析详情

    这篇文章主要介绍了Go语言io pipe源码分析详情,pipe是一个适配器,用于连接Reader和Writer,pipe的方法不多,新的写法却不少,并且结构体分两块,读写信道和结束标识,下面进入文章了解具体的内容吧
    2022-02-02
  • 利用Go语言实现Raft日志同步

    利用Go语言实现Raft日志同步

    这篇文章主要为大家详细介绍了如何利用Go语言实现Raft日志同步,文中的示例代码讲解详细,对我们深入了解Go语言有一定的帮助,需要的可以参考一下
    2023-05-05
  • GO语言常用的文件读取方式

    GO语言常用的文件读取方式

    这篇文章主要介绍了GO语言常用的文件读取方式,涉及一次性读取、分块读取与逐行读取等方法,是非常实用的技巧,需要的朋友可以参考下
    2014-12-12

最新评论