package main

import "fmt"

type Human struct {

name string

age int

phone string

}

type Student struct {

Human //匿名字段

school string

loan float32

}

type Employee struct {

Human //匿名字段

company string

money float32

}

//Human实现SayHi方法

func (h Human) SayHi() {

fmt.Printf("你好我是 %s 电话是 %s\n", h.name, h.phone)

}

//Human实现Sing方法

func (h Human) Sing(lyrics string) {

fmt.Println("La la la la...", lyrics)

}

//Employee重载Human的SayHi方法

func (e Employee) SayHi() {

fmt.Printf("你好我是 %s, 在%s工作. 电话是 %s\n", e.name,

e.company, e.phone)

}

// Interface Men被Human,Student和Employee实现

// 因为这三个类型都实现了这两个方法

type Men interface {

SayHi()

Sing(lyrics string)

}

func main() {

mike := Student{Human{"Mike", 25, "222-222-XXX"}, "MIT", 0.00}

paul := Student{Human{"Paul", 26, "111-222-XXX"}, "Harvard", 100}

sam := Employee{Human{"Sam", 36, "444-222-XXX"}, "Golang Inc.", 1000}

tom := Employee{Human{"Tom", 37, "222-444-XXX"}, "Things Ltd.", 5000}

//定义Men类型的变量i

var i Men

//i能存储Student

i = mike

fmt.Println("这是Mike 是一个学生:")

i.SayHi()

i.Sing("November rain")

//i也能存储Employee

i = tom

fmt.Println("这是TOM 是一个应聘者:")

i.SayHi()

i.Sing("Born to be wild")

//定义了slice Men

fmt.Println(" 让我们来使用一下MEN的切片看发生了什么")

x := make([]Men, 3)

//这三个都是不同类型的元素,但是他们实现了interface同一个接口

x[0], x[1], x[2] = paul, sam, mike

for _, value := range x {

value.SayHi()

}

}

golang 接口格式相关推荐

  1. bal插口_中国银行银企对接接口格式(企业接口).doc

    中国银行银企对接接口格式 PAGE - PAGE 43 / NUMPAGES 62- 中国银行软件中心 中国银行 银企对接接口格式 (前置机接入方式) 文档编号: YQDJ_V01_SP01 当前版本 ...

  2. 雄兔脚扑朔,雌兔眼迷离;双兔傍地走,安能辨我是雄雌?——golang接口的概念

    古有花木兰替父从军,安能识我是女郎?今有golang接口隐式实现.对于一个具体的类型,无须声明它实现了哪些接口,只要提供接口所必需的方法即可. 因为golang是我新学的语言,我们先看看其他语言中接口 ...

  3. golang 接口类型 interface 简介

    目录 1. Go 语言与鸭子类型的关系 2. 值接收者和指针接收者的区别 方法 值接收者和指针接收者 两者分别在何时使用 3. iface 和 eface 的区别是什么 4. 接口的动态类型和动态值 ...

  4. golang 接口_「实战」助力数据库开发之接口篇 - Golang 连接 Greenplum

    Greenplum 作为一款强大的 HTAP 数据库,针对大多数流行语言都有相应的连接库.大部分均是与 PostgreSQL 采用相同的接口,但是也有部分接口是 Greenplum 专门优化后用于自身 ...

  5. Golang——接口、多态、接口继承与转换、空接口、类型断言

    接口是一种规范与标准,只是规定了要做哪些事情.但是具体怎么做,是实现接口的类去做的,接口只是把所有具有共性的方法定义在一起. 接口存在的意义就是用来定义规范,用来做功能的拓展 接口最大的好处是可以实现 ...

  6. golang 接口类型 interface 简介使用

    1. Go 语言与鸭子类型的关系 先直接来看维基百科里的定义: If it looks like a duck, swims like a duck, and quacks like a duck, ...

  7. golang fmt格式“占位符”

    golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf. # 定义示例类型和变量 type Human struct { Name string } var peo ...

  8. 【Golang 接口自动化05】使用yml管理自动化用例

    我们在前面几篇文章中学习怎么发送数据请求,怎么处理解析接口返回的结果,接下来我们一起来学习怎么进行测试用例管理,今天我们介绍的是使用yml文件进行用例管理,所以首先我们一起来了解一下YAML和它的简单 ...

  9. Golang 接口相等比较注意要点

    文章目录 1.出乎意料的比较结果 2.类型不等值相等 3.类型相等值不等 4.回首掏 5.小结 1.出乎意料的比较结果 首先看一段代码: func main() {s := "redigo: ...

最新文章

  1. asp.net网站安全常见问题与防范
  2. 发现dba_segments和dba_extents中统计段空间大小居然不一样
  3. win7旗舰版6l打印机咋安驱动_在w7旗舰版上怎么安装HPlaserjet6L打印机?
  4. go 二进制程序守护_图解 Go 程序是怎样跑起来的
  5. 数据结构-栈4-栈的应用-中缀转后缀
  6. 10 -3 2用c语言怎么打,(3*20+30-10)/2怎么使用C语言编写
  7. 微软服务器打补丁步骤,自己手动制作 Windows 系统补丁包全过程
  8. 全国计算机四六级报名时间,2018年6月四六级考试报名即将截止,请抓紧时间报名!...
  9. Cocos2d-x《雷电大战》(4)-策略模式实现不同子弹切换!!
  10. kubectl exec
  11. 微信小程序学习笔记——常见组件【navigator】导航组件
  12. Android 华为手机ADB调试连接不上的参考解决办法
  13. mac双系统装mysql启动不了了_详解ubuntu双系统启动时卡死解决办法
  14. redis_主从复制搭建
  15. 【R语言】ggplot2---散点图的边框和颜色填充问题
  16. P4学习笔记(二)一个简单P4交换机实现
  17. 数字图像处理 线性系统、卷积、傅立叶变换
  18. 电路设计实例:op07c 运算放大电路设计--- 检测电流
  19. Android大杂烩上篇
  20. 解决rotatedRectangleIntersection计算目标检测旋转框IOU不准确问题C++、opencv

热门文章

  1. python求正方体体积_「高中数学」简单几何体的面积与体积相关知识点整理+例题...
  2. linux mysql 编码修改,Linux下修改MySQL编码的方法
  3. 嵌入式linux笔记,嵌入式linux学习笔记(一)----嵌入式操作系统
  4. python类库丰富吗_Rich库:丰富你的Python程序终端输出
  5. 卖任小龙java视频,任小龙Java大神之路(第九季 SpringMVC)视频教程叩丁狼教育出品...
  6. 什么是okr,和kpi的区别在哪里
  7. 原生mysql的批量更新及性能测试
  8. mysql的in查询是可以用到索引吗?亲测详解
  9. 【好文推荐】springmvc教程下载
  10. 【Ubuntu入门到精通系列讲解】常用 Linux 命令的基本使用