栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

语法和接口作为参数起作用

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

语法和接口作为参数起作用

Go使用接口来泛化类型。因此,如果您想要一个带有特定接口的函数,则可以编写

func MyFunction(t SomeInterface) {...}

SomeInterface
可以将满足的每种类型传递给
MyFunction

现在,

SomeInterface
可以如下所示:

type SomeInterface interface {    SomeFunction()}

为了满足

SomeInterface
,实现它的类型必须实现
SomeFunction()

但是,如果您需要一个空接口(

interface{}
),则该对象不需要实现要传递给该函数的任何方法:

func MyFunction(t interface{}) { ... }

上面的函数将采用所有类型,因为所有类型都实现了空接口。

找回类型

现在您可以拥有所有可能的类型,问题是如何取回之前实际输入的类型。空接口不提供任何方法,因此您无法在该值上调用任何东西。

为此,您需要类型声明:让运行时检查值Y中是否存在类型X,如果存在,则将其转换为该类型。

例:

func MyFunction(t interface{}) {    v, ok := t.(SomeConcreteType)    // ...}

在此示例中,输入参数

t
被断言为type
SomeConcreteType
。如果
t
实际上是type
SomeConcreteType
v
则将保存该类型的实例并且
ok
为true。否则,
ok
将为假。有关详细信息,请参见有关类型声明的规范。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/452354.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号