Golang中的interface,一看就明白

栏目: Go · 发布时间: 7年前

内容简介:先说说接口,接口我理解为一些行为的集合。似乎还是很懵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)

  1. 首先我们写了一个interface,里面有个待实现的方法TypeCal()
type TypeCalculator interface {
    TypeCal() string
}
  1. 又写了两个结构体Worker和Student
type Worker struct {
    Type int
    Name string
}

type Student struct {
    Name string
}
  1. 分别为他们实现了一个与结构体中同名的函数
func (w Worker) TypeCal() string {
    if w.Type == 0 {
        return w.Name +"是蓝翔毕业的员工"
    } else {
        return w.Name+"不是蓝翔毕业的员工"
    }
}

func (s Student) TypeCal() string  {
    return s.Name + "还在蓝翔学挖掘机炒菜"
}
  1. 分别创建worker和student的实例
worker := Worker{Type:0, Name:"小华"}
student := Student{Name:"小明"}
  1. 来来来,重点来了,把这两个实例放同一个TypeCalculator的切片中
workers := []TypeCalculator{worker, student}
  1. 遍历这个切片,并调用切片中的函数打印结果
for _, v := range workers {
    fmt.Println(v.TypeCal())
}

简单分析

从结果上看,确实是不同的实例调用的是各自的函数,这个函数和interface中的 函数名返回值 是相同的。那么加入要是某个实例没有实现interface中的函数呢?当把Student对应的函数注释掉,然后再运行程序,程序报错如下(用我的散装英语翻译就是,Student 没有实现TypeCalculator,TypeCal这个函数/方法找不到)

Student does not implement TypeCalculator (missing TypeCal method)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

需求

需求

[美] 亚德里安•斯莱沃斯基(Adrian J. Slywotzky)、[美]卡尔•韦伯 (Karl Weber) / 魏薇、龙志勇 / 浙江人民出版社 / 2013-6 / 64.9

《财富汇•需求:缔造伟大商业传奇的根本力量》内容简介:需求,是缔造伟大商业传奇的根本力量。《财富汇•需求:缔造伟大商业传奇的根本力量》呈现了人们无法拒绝、竞争对手无法复制的需求创造的六大关键,在人们无奈接受的现状和心中真正期待的理想的这道鸿沟之上,架设起了一道桥梁。 创造需求,需要解开一个谜团,这个谜团是人类学、心理学、科技、设计、经济学、基础设施以及其他众多因素综合而成的奇特组合。《财富汇......一起来看看 《需求》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

随机密码生成器
随机密码生成器

多种字符组合密码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具