扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
本篇内容主要讲解“Golang中的interface有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Golang中的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)
到此,相信大家对“Golang中的interface有什么作用”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流