栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

go语言的接口详解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

go语言的接口详解

如下代码

package main

import "fmt"

//接口是一个协议-程序员- 1.写代码 2.解bug 其实就是一组方法的集合
type Programmer interface {
	Coding() string //方法只是声明
	Debug() string
}

//java里边一种类型只有继承一个接口才行,如果你继承了这个接口,那么这个接口里面全部的方法,你必须实现

type Pythoner struct {
	lib      []string
	kuangjia []string
	years    []int
}

type Go struct {
}

func (p Pythoner) Coding() string {
	fmt.Println("python开发者")
	return "python开发者"
}

func (p Pythoner) Debug() string {
	fmt.Println("我会python的debug")
	return "我会python的debug"
}

func (p Go) Coding() string {
	fmt.Println("go开发者")
	return "go开发者"
}

func (p Go) Debug() string {
	fmt.Println("我会go的debug")
	return "我会go的debug"
}

//对于pythoner这个结构体来说,你实现任何方法都可以,但是你只要不全部实现Coding Debug的话,那你pythoner就不是一个Programmer类型
//1.pythoner本身自己就是一个类型,那我何必在意我是不是Programmer
//2.多态的概念
//3.在讲解多态之前,先对interface做一个说明,在go语言中接口是一种类型,是一种抽象类型,int也是一种类型

//开发中经常会遇到的问题
//开发一个电商网站,支付环节,使用微信,支付宝,银行卡,你的系统支持各种类型的支付,每一种支付类型都有统一的接口
//定义一个协议,1.创建订单,2.支付 3.查询支付状态 4.退款
//支付发起了
type AliPay struct {
}

type WeChat struct {
}

type Bank struct {
}

var b Bank
var a AliPay
var w WeChat

//多态 什么类型的时候你申明的类型是一种兼容类型,但是实际赋值的时候是另一种类型
//接口的强制性
//你现在有一个缓存系统 - 这个地方你一开始使用的是缓存redis,但考虑到后期可能使用其他的缓存技术 - 本地memcache
//var x Tongyong
//
//x = Bank{}
//x = Alipay{}
//x = WeChar{}
//
//x.pay
//x.create
//x.query
//这种多态性,其实在python中不需要python中不需要多态,python是动态语言

//go语言不支持继承
//如果后期接入一个新的支付或者取消一个已有的支付

func Handle(p Programmer) {

}

func main() {
	//新的语言出来了,接口帮我们完成了go语言的多态
	var pro Programmer = Pythoner{}
	var pro2 Programmer = Go{}
	var pros []Programmer
	pros = append(pros, Pythoner{}, Go{})

	//接口虽然是一种类型,但是和其他类型不太一样,接口是一种抽象类型,struct是具象
	var p = Pythoner{}
	fmt.Printf("%Tn", p)
	fmt.Printf("%Tn", pro)
	fmt.Printf("%Tn", pro2)
	//如果大家对于面向对象理解的话,java里面的抽象类型与之很像
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/678931.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号