Go 语言接口

Go 语言接口

Go 语言提供了另外一种数据类型即接口,它把所有的具有共性的方法定义在一起,任何其他类型只要实现了这些方法就是实现了这个接口。

实例

 1 /* 定义接口 */
 2 type interface_name interface {
 3    method_name1 [return_type]
 4    method_name2 [return_type]
 5    method_name3 [return_type]
 6    ...
 7    method_namen [return_type]
 8 }
 9
10 /* 定义结构体 */
11 type struct_name struct {
12    /* variables */
13 }
14
15 /* 实现接口方法 */
16 func (struct_name_variable struct_name) method_name1() [return_type] {
17    /* 方法实现 */
18 }
19 ...
20 func (struct_name_variable struct_name) method_namen() [return_type] {
21    /* 方法实现*/
22 }

实例

 1 package main
 2
 3 import (
 4     "fmt"
 5 )
 6
 7 type Phone interface {
 8     call()
 9 }
10
11 type NokiaPhone struct {
12 }
13
14 func (nokiaPhone NokiaPhone) call() {
15     fmt.Println("I am Nokia, I can call you!")
16 }
17
18 type IPhone struct {
19 }
20
21 func (iPhone IPhone) call() {
22     fmt.Println("I am iPhone, I can call you!")
23 }
24
25 func main() {
26     var phone Phone
27
28     phone = new(NokiaPhone)
29     phone.call()
30
31     phone = new(IPhone)
32     phone.call()
33
34 }

在上面的例子中,我们定义了一个接口Phone,接口里面有一个方法call()。然后我们在main函数里面定义了一个Phone类型变量,并分别为之赋值为NokiaPhone和IPhone。然后调用call()方法,输出结果如下:

I am Nokia, I can call you!
I am iPhone, I can call you!
时间: 2024-11-06 11:08:14

Go 语言接口的相关文章

opencv的C语言接口和C++接口差别(入门篇)

opencv是一个开源的图像处理库,最经典的1.0版本号提供的接口都是C语言接口. 后来的opencv2.x版本号保留了C语言接口,可是提供了C++接口,当中的C语言接口仅仅是为了向后兼容,而C++接口才是大势所趋. 那么这两者有什么差别呢?今天介绍一下配置过程中的差别. 以opencv2.3.0和vs2008为例.配置时.先要配置包括文件和库文件,然后在系统变量path中加入dll文件.最后再项目属性中加入附加依赖库.我平时用的功能不多.一般加入这几项opencv_core230.lib.op

Swift中对C语言接口缓存的使用以及数组、字符串转为指针类型的方法

由于Swift编程语言属于上层编程语言,而Swift中由于为了低层的高性能计算接口,所以往往需要C语言中的指针类型,由此,在Swift编程语言刚诞生的时候就有了UnsafePointer与UnsafeMutablePointer类型,分别对应为const Type*类型与Type *类型. 而在Swift编程语言中,由于一般数组(Array)对象都无法直接用于C语言中含有指针类型的函数参数(比如:void*),所以往往需要将数组转为指针类型,此外也需要将数组中元素内容存放到连续的存储空间.此外,

[转]SQLITE3 C语言接口 API 函数简介

SQLITE3 C语言接口 API 函数简介 说明:本说明文档属作者从接触 SQLite 开始认识的 API 函数的使用方法, 由本人翻译, 不断更新. /* 2012-05-25 */ int sqlite3_open( const char* filename, /* 数据库文件名, 必须为 UTF-8 格式 */ sqlite3** ppDB /* 输出: SQLite 数据库句柄 */ ); 说明: 该函数打开由 filename 指定的数据库, 一个数据库连接句柄由 *ppDB 返回(

opencv的C语言接口和C++接口区别(入门篇)

opencv是一个开源的图像处理库,最经典的1.0版本提供的接口都是C语言接口.后来的opencv2.x版本保留了C语言接口,但是提供了C++接口,其中的C语言接口只是为了向后兼容,而C++接口才是大势所趋.那么这两者有什么区别呢?今天介绍一下配置过程中的区别. 以opencv2.3.0和vs2008为例,配置时,先要配置包含文件和库文件,然后在系统变量path中添加dll文件,最后再项目属性中添加附加依赖库.我平时用的功能不多,一般添加这几项opencv_core230.lib,opencv_

python调用C语言接口

python调用C语言接口 注:本文所有示例介绍基于linux平台 *** 在底层开发中,一般是使用C或者C++,但是有时候为了开发效率或者在写测试脚本的时候,会经常使用到python,所以这就涉及到一个问题,用C/C++写的底层库,怎么样直接被python来调用? python作为一门胶水语言,当然有办法来处理这个问题,python提供的方案就是ctypes库. ctypes ctypes是python的外部函数库,它提供了C语言的兼容类型,而且可以直接调用用C语言封装的动态库. 如果各位有较

浅入浅出 Go 语言接口的原理

浅入浅出 Go 语言接口的原理 接口是 Go 语言的重要组成部分,它在 Go 语言中通过一组方法指定了一个对象的行为,接口 interface 的引入能够让我们在 Go 语言更好地组织并写出易于测试的代码.然而很多使用 Go 语言的工程师其实对接口的了解都非常有限,对于它的底层实现也一无所知,这其实成为了我们使用和理解 interface 的最大阻碍. 在这一节中,我们就会介绍 Go 语言中这个重要类型 interface 的一些常见问题以及它底层的实现,包括接口的基本原理.类型断言和转换的过程

C语言接口与实现实例

一个模块有两部分组成:接口和实现.接口指明模块要做什么,它声明了使用该模块的代码可用的标识符.类型和例程,实现指明模块是如何完成其接口声明的目标的,一个给定的模块通常只有一个接口,但是可能会有许多种实现能够提供接口所指定的功能.每个实现可能使用不同的算法和数据结构,但是它们都必须符合接口所给出的使用说明.客户调用程序是使用某个模块的一段代码,客户调用程序导入接口,而实现导出接口.由于多个客户调用程序是共享接口和实现的,因此使用实现的目标代码避免了不必要的代码重复,同时也有助于避免错误,因为接口和

SWIG 多语言接口变换 【转】

一.             SWIG 是Simple Wrapper and Interface Generator的缩写,是一个帮助使用C或者C++编写的软件创建其他编语言的API的工具.例如,我想要为一个C++编写的程序创建.NET API,一般情况下我必须使用托管C++(Managed C++)去编写大量的代码才能生成它的.NET API.有了SWIG,这个机械的工作将变得非常简单.你只须要使用一个接口文件告诉SWIG要为那些类创建.NET API,SWIG就会自动帮你生成它的.NET

Sword redis C语言接口介绍

hiredis安装 hiredis是redis官方推荐的基于C接口的客户端组件,它提供接口,供c语言调用以操作数据库. 在redis的源码包的deps/hiredis下就有它的源码 安装方法,进入deps/hiredis目录,执行命令: make make install 主要函数接口 函数原型:redisContext *redisConnect(const char *ip, int port); 说明:该函数用来连接redis数据库,参数为数据库的ip地址和端口,通常默认端口为6379.该