golang:interface{}类型测试

在golang中空的interface即interface{}可以看作任意类型, 即C中的void *.

对interface{}进行类型测试有2种语法:

1. Comma-ok断言:

value, ok = element.(T),

其中T是具体类型.

2. Switch测试:

switch element.(type) {

case T1:

case T2:

default:

}

其中T1, T2是具体类型.

注意: element.(type)语法不能在switch外的任何逻辑里使用. 在switch外必须使用comma-ok断言或者反射:

reflect.TypeOf(element)

reflect.ValueOf(element)

时间: 2024-10-09 22:59:48

golang:interface{}类型测试的相关文章

职业类型测试结果

您的职业类型是研究型 职业特征 你为人好奇,有较强的求知欲,且独立性强,平时爱好专研:你的抽象思维能力较强,喜欢进行逻辑分析和推理,且通常你考虑问题较为理性,凡事欲求精确.相对而言,你更喜欢较为独立的工作环境,且更愿意需要认真专研且富有一定创造性的工作. 典型人物 著名科学家爱迪生正因为具备了相关领域中丰富的知识基础.抽象的逻辑思维以及坚持不懈的钻研精神,才有了电灯.电报等的发明,为人类事业做出了巨大的贡献,被誉为"世界发明大王". 发展方向 从事科学研究性质以及具有科学研究价值的职业

匿名类型测试

/// <summary>     /// /匿名类型测试     /// //参数名称.类型.顺序不同,则同一程序中声明的匿名类型实例不同     /// </summary>     class AnonymousType     {         //测试匿名类型         public static void Test1()         {             var var1 = new { name = "张三", age = 18

golang interface

什么是接口? 简单的说,interface是一组method签名的组合,我们通过interface来定义对象的一组行为.interface类型定义了一组方法,如果某个对象实现了某个接口的所有方法,则此对象就实现了此接口 .     Go中的接口为指定对象的行为提供了一种方式:如果事情可以这样做,那么它就可以在这里使用.我们已经看到一些简单的例子:自定义的打印可以通过String() 方法来实现,而Fprintf 可以通过Write 方法输出到任意的地方.只有一个或两个方法的接口在Go代码中很常见

深入学习golang(3)—类型方法

类型方法 在Go语言中,我们可以给任何类型(包括内置类型,但不包括指针和接口)定义方法.例如,在实际编程中,我们经常使用[ ]byte的切片,我们可以定义一个新的类型: type ByteSlice []byte 然后我们就可以定义方法了.例如,假如我们不想使用内建的append函数,我们可以实现一个自己的append方法: func Append(slice, data[]byte) []byte { l := len(slice) if l + len(data) > cap(slice)

MySQL空间类型测试

Mysql空间类型介绍: MySQL支持空间扩展,允许生成.保存和分析地理特征.这些特征可用于MyISAM.InnoDB.NDB.BDB和ARCHIVE表(但是,ARCHIVE引擎不支持索引功能,因此,不能为ARCHIVE列中的空间列编制索引). 测试目的: 想用mysql的专用空间类型来代替整数类型存储坐标信息,从而在地图搜索的时候提高效率. 参考文档: http://dev.mysql.com/doc/refman/5.1/zh/spatial-extensions-in-mysql.htm

golang interface接口

package main import "fmt" type Shaper interface { Area() float32 } type Square struct { side float32 } func (sq *Square) Area() float32 { return sq.side * sq.side } func main() { sq1 := new(Square) sq1.side = 5 var areaIntf Shaper areaIntf = sq1

Nat类型测试

这是一个测试NAT类型的小工具,一般也没太多用处,只有游戏玩家可能需要用来测试你的网络NAT类型是什么.NAT类型一般分为以下4种: 1. Full Cone NAT (完全圆锥型)2. Restricted Cone NAT (地址限制圆锥型)3. Port Restricted Cone NAT (端口限制圆锥型)4. Symmetric NAT (对称型) 一般来说,第一种Full Cone NAT是用光猫直接拨号测试出来的类型,这时候用PSV等联机没什么问题.用路由器拨号可能会显示第三种

golang mongo-driver filter 构建--bson和golang基础类型

go.mongodb.org/mongo-driver 是mongo的golang官方包 通过例子我知道连接是这样的 clientOptions := options.Client().ApplyURI("mongodb://tag:[email protected]:27017/tag") client, err := mongo.NewClient(clientOptions) if err != nil { fmt.Println(err) } ctx, _ := context

golang - interface的作用

多态.struct 可以赋值给 interface.interface 可以转换成子接口,或者 struct. 请看go中的一段的源代码: listener, _ := net.Listen("tcp", "localhost:8000") tcpListener := listener.(*net.TCPListener) conn,_ := tcpListener.Accept() 仔细拜读源码可知: net.Listen() 返回了一个 Listener接口,