• 让我们一起Go(十三)


    前言:

    上篇,我们了解了Go语言接口的一些知识,在这篇中,我们将继续聊聊接口这东西。

    Go语言空接口

    Go语言中定义一个空接口,也就是没有任何函数需要实现的接口就是一个空接口,作为一个空接口,因为对象无需实现它的函数,所以它可以指向任何对象,看下面的示例:

    上面的empty接口变量分别可以被赋值为int类型,string类型,结构类型和数组类型等等。最后,使用Println打印出相应的内容。那么,fmt包的Println函数又是如何知道这个要打印的变量是什么类型的呢?这就需要用到接口的类型断言了。

    类型断言

    什么是类型断言呢?类型断言是在运行时才会起推断作用的,既然是类型断言,当然是对变量是什么类型进行判断了。如上面的例子,最后说的Println函数,其实它的函数参数是这样的:

    通过之前的学习,我们知道这是一个可变参数,而且类型是一个空接口,空接口是可以指向任何对象的,继续翻出Fprintln函数,然后继续往下翻,最终会查看该类型是否实现了String()方法,有的话就直接反射来变量成员。对于内置类型则如下:

    未把全部代码展示出来,但是我们已经看到了类型断言的用法了。断言出类型后,就会通过switch case去匹配类型,如果匹配到就执行相应的操作。知道了用法,我们也来试试吧:

    这样在运行时,Go语言断言了i的类型,并执行了相应操作。为了证明这是在运行时发生的,我们再来看一个例子:

    完成后,我们可以顺利的完成编译,但是运行后会有一个panic:

    告诉我们原来是没有实现Testone的方法。

    本篇小结:

    今天就到这里,关于类型断言今天就有个认识就可以了,以后我们会用它解决更实际的东西。

  • 相关阅读:
    使用C39HrP48DhTt字體生成條型碼
    GUI設計禁忌
    music
    AADL的四种经典设计模式
    Model to Text工具Acceleo使用教程(七)——模板服务
    Model to Text工具Acceleo使用教程(二)——体系结构
    Model to Text工具Acceleo使用教程——背景知识
    P/NP/NPC/NPhard概念的图形解释
    哥德巴赫猜想穷举验证算法及实现
    Model to Text工具Acceleo使用教程(五)——模板服务
  • 原文地址:https://www.cnblogs.com/vimsk/p/3273369.html
Copyright © 2020-2023  润新知