Go的空接口

空接口(interface{})不包含任何的方法,正因为如此,所有的类型都实现了空接口,因此空接口可以存储任意类型的数值。它有点类似于C语言的void *类型。

????var v1 interface{} = 1 // 将int类型赋值给interface{}
????var v2 interface{} = "abc" // 将string类型赋值给interface{}
????var v3 interface{} = &v2 // 将*interface{}类型赋值给interface{}
????var v4 interface{} = struct{ X int }{1}
????var v5 interface{} = &struct{ X int }{1}

当函数可以接受任意的对象实例时,我们会将其声明为interface{},最典型的例子是标准库fmt中PrintXXX系列的函数,例如:
????func Printf(fmt string, args ...interface{})
????func Println(args ...interface{})

原文地址:http://blog.51cto.com/13914991/2294028

时间: 2024-08-01 12:10:09

Go的空接口的相关文章

43_空接口

1.空接口(interface{})不包含任何的方法,正因为如此,所有的类型都实现了空接口,因此空接口可以存储任意类型的数值. 2.它有点类似于C语言的void *类型 代码如下: package main import "fmt" func main() { var v1 interface{} = 1 var v2 interface{} = "ads" var v3 interface{} = &v2 var v4 interface{} = stru

Serializable是一个空接口,如何实现序列化

Serializable接口的定义: public interface Serializable{}  Serializable 接口之所以定义为空,是因为它只起到了一个标识的作用,告诉程序实现了它的对象是可以被序列化的,但真正序列化和反序列化的操作并不需要它来完成. static和transient修饰的字段不能序列化 原文地址:https://www.cnblogs.com/enhance/p/11099309.html

标志接口,空接口,

标识接口是没有任何方法和属性的接口.标识接口不对实现它的类有任何语义上的要求, 它仅仅表明实现它的类属于一个特定的类型. 标接口在Java语言中有一些很著名的应用,比如java.io.Serializable和java.rmi.Remote等接口便是标识接口. 标识接口,当一个类实现了一个标识接口之后就像是给自己打了个标签. 举个例子来说吧. 猎人用猎枪打猎,猎枪面对的目标是人不开火,猎枪面对的不是人的话就会开火. //表明万事万物的接口 public interface SomeThing {

我为何需要使用空接口?

显然,这种设计把持久功能放在PersistentObject 基接口中,并且要求想要拥有持久状态的对象继承PersistentObject.表面上,这是合理的:毕竟,这样使用继承是一种沿用已久的设计模式,那么,它可能有什么问题?我们发现,这种设计有这样一些问题:? 上面的继承层次用来给 Thing1 和Thing2 增加行为.但在严格的OO 模型中,行为只能通过发送消息来调用.这引发了这样一个问题:PersistentObject 实际上该怎样着手完成它的工作:推测起来,它对Thing1 and

[GO]空接口

package main import "fmt" //空接口的实际意义就在于在使用函数时,空接口可以接收任意类型的值,类似于python中的*args, **kwargs func xxx(arg ...interface{}) { } func main() { //定义一个空接口类型,在它里面没有任何的方法 //空接口是一个万能的类型,它能接收任意类型的值 var i interface{} =1 fmt.Println("i = ", i) i = &quo

创建对象的第二种方式:克隆clone,要实现Cloneable接口

1 ackage com.wisezone.clone; 2 3 /** 4 * 空接口: 5 * 标识,告诉JVM,通行 6 * 1.克隆 7 * 2.序列化 8 * 9 * 创建对象的第二种方式:克隆clone,要实现Cloneable 10 * @author 王东海 11 * @2017年4月15日 12 */ 13 public class TestClone implements Cloneable 14 { 15 public String name; 16 17 public s

Go 语言基础(六) 之 接口

1.接口的定义 保留字 interface 被赋予了多种不同的含义. 每个类型都有接口,意 味着对那个类型定义了方法集合 定义结构和结构的方法: type S struct { i int } func (p *S) Get() int { return p.i } func (p *S) Put(v int) { p.i = v } 也可以定义接口类型,仅仅是方法的集合. 这里定义了一个有两个方法的接口 I: type I interface { Get() int Put(int) } 对于

serialVersionUID, ObjectInputStream与ObjectOutputStream类,Serializable接口,serialVersionUID的作用和用法

ObjectInputStream与ObjectOutputStream类所读写的对象必须实现Serializable接口,对象中的transient和static类型成员变量不会被读取和写入 Serializable其实是一个空接口 package java.io; public interface Serializable { } Serializable是一个空接口,没有什么具体内容,它的目的只是简单的标识一个类的对象可以被序列化. 什么情况下需要序列化 a)当你想把的内存中的对象写入到硬

RandomAccess接口

在继续讲解ArrayList源码之前,我们先看一些其他的类和接口. RandomAccess是一个接口,位于java.util包中. 这个接口的作用注释写的很清楚了: /** * Marker interface used by <tt>List</tt> implementations to indicate that * they support fast (generally constant time) random access. The primary * purpos