go接口的使用方法

go语言中,接口是一个编程规约,也是一组方法的集合。

1、接口的定义

//关键字 interface,定义一个叫 print的接口类型
type Print interface {
	Speak()
	Age()
}

接口定义大括号内可以是方法声明的集合。

2、接口的初始化和调用

单纯地声明一个接口变量没有任何意义,接口只有被初始化为具体的类型时才有意义。接口起到抽象和适配的作用。没有初始化的接口变量,其默认值是nil

接下来开始使用接口,废话不多说上代码!

package main

import "fmt"
//定义接口
type Print interface {
	Speak()
	Age()
}
//定义一个结构体
type Me struct {
	name string
	age  int
}

//接口函数的实现
func (m *Me) Speak() {
	fmt.Println("My name is",m.name)
}
//接口函数的实现
func (m *Me) Age() {
	fmt.Println("My age is",m.age)
}


func main()  {
//定义一个Print的接口变量
    var i Print
//实例化一个Me类型变量
    me := Me{"ssj",26}

//方法1:初始化接口变量的,并调用接口的方法
    i = Me{"SSJ",26}
    i.Speak()
    i.Age()

//方法2:初始化接口变量,并调用其方法
    Print(me).Speak()
    Print(me).Age()
}

编译并运行程序
在这里插入图片描述

3、接口类型的断言

if o,ok := i.(TypeName); ok {
     ....
}

TypeName是具体类型名,此时如果接口i绑定的实例类型就是具体类型TypeName,则ok为true,变量o的类型就是TypeName,变量o的值就是TypeName接口底层绑定的实例值的副本。

package main

import "fmt"

type Print interface {
	Speak()
	Age()
}

type Me struct {
	name string
	age  int
}


func (m Me) Speak() {
	fmt.Println("My name is",m.name)
}

func (m Me) Age() {
	fmt.Println("My age is",m.age)
}


func main()  {
	m := Me{"zmj",12}
	var a interface{} = m
	
	if o,ok := a.(Print);ok{
		o.Speak()
		o.Age()
    }	
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值