03-接口

1. 代码结构

在这里插入图片描述

2. struct_demo.go

package struct_demo

import "fmt"
type Power struct {
	Atk int
	Def int
}
//定义西蜀结构体
type Xishu struct {
	ID int
	Name string
	Age int
	Position string
	Power
}
//定义东吴结构体
type Dongwu struct {
	ID int
	Name string
	Age int
	Position string
	Power
}

//定义 西蜀方法一
func (xishu *Xishu)Infor01() string {
	fmt.Println("蜀将个人信息")
    fmt.Println("姓名: ",xishu.Name)
    fmt.Println("职务: ",xishu.Position)
    return "蜀将个人信息"
}
//定义 西蜀方法二
func (xishu *Xishu)Infor02() string {
	fmt.Println("蜀将战力")
	fmt.Println("攻击力: ",xishu.Atk)
	fmt.Println("防御力: ",xishu.Def)
	return "蜀将战力"
}


//定义 东吴方法一
func (dongwu *Dongwu)Infor01() string {
	fmt.Println("吴将个人信息")
	fmt.Println("姓名: ",dongwu.Name)
	fmt.Println("职务: ",dongwu.Position)
	return "吴将个人信息"
}

//定义 东吴方法二
func (dongwu *Dongwu)Infor02() string {
	fmt.Println("吴将战力")
	fmt.Println("攻击力: ",dongwu.Atk)
	fmt.Println("防御力: ",dongwu.Def)
	return "武将战力"
}

3. interface_demo

package interface_demo

//定义一个接口
type Behavior interface {
   Infor01() string
   Infor02() string
}

4. main.go

package main

import (
	"814/interface_demo"
	"814/struct_demo"
	"fmt"
)
func main () {
    //定义刘备数据
	liubei := new(struct_demo.Xishu)
	liubei.ID = 0
	liubei.Name = "刘备"
	liubei.Age = 28
	liubei.Position = "主公"
	liubei.Atk = 200
	liubei.Def = 300

    //定义周瑜数据
	zhouyu := new(struct_demo.Dongwu)
	zhouyu.ID = 0
	zhouyu.Name = "周瑜"
	zhouyu.Age = 20
	zhouyu.Position = "大都督"
	zhouyu.Atk = 400
	zhouyu.Def = 300

    //调用后边创建的"调用接口的函数",分别将刘备、周瑜数据传入
	action(liubei)
	action(zhouyu)
}

//定义一个函数,调用接口
func action( b interface_demo.Behavior) string {
	fmt.Println("#################")
	b.Infor01()
	fmt.Println("-------------------")
	b.Infor02()
	return ""
}

5. 运行结果

#################
蜀将个人信息
姓名:  刘备
职务:  主公
-------------------
蜀将战力
攻击力:  200
防御力:  300
#################
吴将个人信息
姓名:  周瑜
职务:  大都督
-------------------
吴将战力
攻击力:  400
防御力:  300

Process finished with the exit code 0

posted on 2021-08-18 15:53  运维开发玄德公  阅读(4)  评论(0编辑  收藏  举报  来源

导航