内容简介:先说说接口,接口我理解为一些行为的集合。似乎还是很懵x。来看看代码和允许效果,再说。从结果上看,确实是不同的实例调用的是各自的函数,这个函数和interface中的
Golang中的interface,一看就明白
先说说接口,接口我理解为一些行为的集合。似乎还是很懵x。来看看代码和允许效果,再说。
package main
import "fmt"
type TypeCalculator interface {
TypeCal() string
}
type Worker struct {
Type int
Name string
}
type Student struct {
Name string
}
func (w Worker) TypeCal() string {
if w.Type == 0 {
return w.Name +"是蓝翔毕业的员工"
} else {
return w.Name+"不是蓝翔毕业的员工"
}
}
func (s Student) TypeCal() string {
return s.Name + "还在蓝翔学挖掘机炒菜"
}
func main() {
worker := Worker{Type:0, Name:"小华"}
student := Student{Name:"小明"}
workers := []TypeCalculator{worker, student}
for _, v := range workers {
fmt.Println(v.TypeCal())
}
}
//运行效果
//小华是蓝翔毕业的员工
//小明还在蓝翔学挖掘机炒菜
开始解(xia)释(bai)
- 首先我们写了一个interface,里面有个待实现的方法TypeCal()
type TypeCalculator interface {
TypeCal() string
}
- 又写了两个结构体Worker和Student
type Worker struct {
Type int
Name string
}
type Student struct {
Name string
}
- 分别为他们实现了一个与结构体中同名的函数
func (w Worker) TypeCal() string {
if w.Type == 0 {
return w.Name +"是蓝翔毕业的员工"
} else {
return w.Name+"不是蓝翔毕业的员工"
}
}
func (s Student) TypeCal() string {
return s.Name + "还在蓝翔学挖掘机炒菜"
}
- 分别创建worker和student的实例
worker := Worker{Type:0, Name:"小华"}
student := Student{Name:"小明"}
- 来来来,重点来了,把这两个实例放同一个TypeCalculator的切片中
workers := []TypeCalculator{worker, student}
- 遍历这个切片,并调用切片中的函数打印结果
for _, v := range workers {
fmt.Println(v.TypeCal())
}
简单分析
从结果上看,确实是不同的实例调用的是各自的函数,这个函数和interface中的 函数名 和 返回值 是相同的。那么加入要是某个实例没有实现interface中的函数呢?当把Student对应的函数注释掉,然后再运行程序,程序报错如下(用我的散装英语翻译就是,Student 没有实现TypeCalculator,TypeCal这个函数/方法找不到)
Student does not implement TypeCalculator (missing TypeCal method)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Beginning ASP.NET 4 in C# and Vb
Imar Spaanjaars / Wrox / 2010-3-19 / GBP 29.99
This book is for anyone who wants to learn how to build rich and interactive web sites that run on the Microsoft platform. With the knowledge you gain from this book, you create a great foundation to ......一起来看看 《Beginning ASP.NET 4 in C# and Vb》 这本书的介绍吧!