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

实例

/* 定义接口 */
type interface_name interface {
method_name1 [return_type]
method_name2 [return_type]
method_name3 [return_type]
...
method_namen [return_type]
} /* 定义结构体 */
type struct_name struct {
/* variables */
} /* 实现接口方法 */
func (struct_name_variable struct_name) method_name1() [return_type] {
/* 方法实现 */
}
...
func (struct_name_variable struct_name) method_namen() [return_type] {
/* 方法实现*/
}

实例

package main

import (
"fmt"
) type Phone interface {
call()
} type NokiaPhone struct {
} func (nokiaPhone NokiaPhone) call() {
fmt.Println("I am Nokia, I can call you!")
} type IPhone struct {
} func (iPhone IPhone) call() {
fmt.Println("I am iPhone, I can call you!")
} func main() {
var phone Phone phone = new(NokiaPhone)
phone.call() phone = new(IPhone)
phone.call() }

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

I am Nokia, I can call you!
I am iPhone, I can call you!

最新文章

  1. Xcode7下模拟器输入文本无法显示系统键盘的解决办法
  2. iScroll.js 用法参考 (share)
  3. Excel和datatable相互操作
  4. Revit如何修改三维视图背景色
  5. [shell基础]——数组
  6. 关于PowerBuilder 9.0中如何修改项目工程名字
  7. excel 无法打开文件,提示:向程序发送命令时出现问题
  8. Linux特殊权限
  9. NET5
  10. Java错误提示is not an enclosing class
  11. IE6下a标签失效(背景穿透)
  12. FFT算法的完整DSP实现(转)
  13. Presto集群部署
  14. 二十八、linux下权限管理chmod
  15. 微信小程序错误码参考大全
  16. Spring如何使用JdbcTemplate调用存储过程的三种情况
  17. Ruby面向对象
  18. Java设计模式学习记录-责任链模式
  19. expect自动化工具
  20. 利用反射C#获取事件列表

热门文章

  1. python JavaScript
  2. 【Web安全】DoS及其家族
  3. 学习React系列(六)——更新dom细节于原理
  4. Java内存回收机制.md
  5. Xshell5下利用sftp上传下载传输文件
  6. Java进阶篇(一)——接口、继承与多态
  7. 全球性WannaCry蠕虫勒索病毒感染前后应对措施
  8. LoggerOne
  9. [LeetCode] Longest Continuous Increasing Subsequence 最长连续递增序列
  10. JavaScript 和 TypeScript 中的 class