Go语言的相关接口

GO接口设计

Go的接口设计和很多主流的语言有很大的差别
避免的循环依赖的问题
方法签名一直即可
GO接口的实现 不依赖于Go接口的定义

接口为非入侵性,实现不依赖于接口定义
接口的定义可以包含在接口的使用者包内

Go 语言的DuckType式接口实现

package interface_test

import "testing"

//先定义一个接口
type Programmer interface {
	WriteHelloWorld( ) string
}

//定义一个类型
type GoProgrammer struct {

}


//实现类型的方法
func (g *GoProgrammer) WriteHelloWorld( ) string{
	return "fmt.Println(\"Hello World\")"
}

func TestClient(t *testing.T) {
	var p Programmer
	p = new(GoProgrammer)


	t.Log(p.WriteHelloWorld())
}

接口变量

	var prog Coder = &GoProgrammer{}
	//接口变量 prog Coder分为两部分
	/*
		prog 第一部分是类型 type GoProgram struct{}
		prog 第二部分是数据 &GoProgrammer{}
	 */

自定义类型


//将冗长的方法别名 创建成自己的类型
type IntConv func(op int) int

//函数开始和结束时候打点,用来计数函数运行的时常
func TimeSpent (inner IntConv) IntConv{
	return func(n int) int {
		start := time.Now()
		//inner变量名称 IntConv变量类型
		ret := inner(n)
		fmt.Println("Time Spent:",time.Since(start).Seconds())
		return ret
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值