Golang中空接口的使用

抽象潮涌
• 阅读 1096

Go语言中的空接口是接口类型的一种特殊的形式,即是一个没有任何方法的接口。因为,空接口没有任何方法,因此,我们可以说 Golang 中的任何 数据类型 都实现了空接口。空接口是任何类型的父接口。

使用空接口保存一个数据的过程会比直接用数据对应类型的变量保存稍慢。因此在开发中,应在需要的地方使用空接口,而不是在所有地方使用空接口。

任何变量都可以赋值给interface{}类型的变量。

空接口的定义方式:

type emptyInt interface {}

// 声明一个空接口实例
var i interface{}

//再比如函数使用空接口类型参数:
func myfunc(i interface{})

通过空接口类型,Go也能像其它动态语言一样,在数据结构中存储任意类型的数据。

结构体与接口的区别:

结构体:由不同类型的元素组合而成。
1、struct结构体中的类型可以是任意类型;

接口:
接口是一组方法的签名的集合。
接口定义方法名,Golang中的接口,不需要显示的实现。Interface类型可以定义一组方法,但是这些不需要实现。并且interface不能包含任何变量。

只要一个变量,含有接口类型中的所有方法,那么这个变量就实现这个接口.

空结构体表示一个占位符,
空接口表示一个类型

参考: https://blog.csdn.net/whhcs/a...

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
java8 Collector 接口
java8的Stream中的collect方法,用于对流中的数据进行归集操作,collect方法接受的参数是一个Collector,忽略掉静态方法后,Collector接口内容如下:publicinterfaceCollector<T,A,R//用于生成空的累加器实例,这个累加器的类型是ASuppl
Wesley13 Wesley13
3年前
javaBean为什么要implements Serializable
一个对象序列化的接口,一个类只有实现了Serializable接口,它的对象才是可序列化的。因此如果要序列化某些类的对象,这些类就必须实现Serializable接口。而实际上,Serializable是一个空接口,没有什么具体内容,它的目的只是简单的标识一个类的对象可以被序列化。    什么情况下需要序列化:    1.     当
Easter79 Easter79
3年前
SpringBoot自定义序列化的使用方式
场景及需求:项目接入了SpringBoot开发,现在需求是服务端接口返回的字段如果为空,那么自动转为空字符串。例如:\    {        "id":1,        "name":null    },    {        "id":2,        "name":"x
Wesley13 Wesley13
3年前
@protocol (协议)和 @interface (接口)的区别
ObjectiveC中的协议(@protocol),相当于C,Java等语言中的接口(Interface)。协议本身不实现任何方法,只是声明方法,使用协议的类必须实现协议方法。ObjectiveC中的接口(@interface),相当于C,Java等语言中的类(Class),是类的一个声明,不同与C,Java等语言的接口
Stella981 Stella981
3年前
Golang空接口的小技巧应用
最近在用golang写一个框架,希望可以比较灵活地构建一个方法,可以接受任意类型的输入,这样首先想到的是使用空接口interface{},因为在golang里面没有泛型。空接口例子一:typedownloadinterface{Download(interface{})}typedlstruc
Wesley13 Wesley13
3年前
Java 接口基础详解
目录Java接口示例实现一个接口接口实例实现多个接口方法签名重叠接口变量接口方法接口默认方法接口与继承继承与默认方法接口与多态性在Java中,接口是一个抽象类型,有点类似于类,但Java接口只能包含方法签名与属性,
Wesley13 Wesley13
3年前
Java8 新特性 函数式接口
什么是函数式接口  函数式接口是Java8引用的一个新特性,是一种特殊的接口:SAM类型的接口(SingleAbstractMethod)。但是它还是一个接口,只是有些特殊罢了。  函数式接口的出现主要是为了配合Java8的另一个新特性Lamdba表达式来使用。接口中只有一个抽象方法接口
Wesley13 Wesley13
3年前
Java oop第05章_多态、接口
一、为什么需要接口?  Java中当一个类继承父类时,最多也只能继承一个父类,扩展性会受到一定的限制,为了弥补这一缺陷,Java又提供了一种新的引用数据类型分类,叫接口。一个类只能继承一个父类,但可以实现多个接口。二、接口的定义和使用:  1.定义接口:使用interface关键
Wesley13 Wesley13
3年前
C++基本内置类型
  (博文参考书籍《CPrimer中文版》,摘录易忘知识点和容易混淆的内容)  C定义了一套包括算术类型(arithmetictype)和空类型(void)在内的基本数据类型。  其中算术类型包含:字符、整数型、布尔值、浮点数。  空类型不对应具体的值,仅用于一些特定场合,常见的如:函数不返回任何值是,使用空类型作为
Wesley13 Wesley13
3年前
Java面试常问集合框架22道面试真题(详解)
简介集合框架:用于存储数据的容器。集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。接口:表示集合的抽象数据类型。接口允许我们操作集合时不必关注具体实现,从而达到“多态”。在面向对象编程语言中,接口通常用来形成规范。
小万哥 小万哥
1年前
Java 枚举(Enums)解析:提高代码可读性与易维护性
接口在Java中,实现抽象的另一种方式是使用接口。接口定义接口是一个完全抽象的类,用于将具有空方法体的相关方法分组:java//接口interfaceAnimalpublicvoidanimalSound();//接口方法(没有具体实现体)publicvo