golang 结构体的嵌入类型和接口
admin
2023-07-31 21:04:37
0

结构体的嵌入类型


1、嵌入结构体1

package main

import "fmt"

type Person struct {
	name string
}

type Student struct {
	class int
	person Person         //定义person 类型为Person
}


func main(){
	s := Student{1,Person{"xiaoming"}}
	fmt.Println("name :",s.person.name)  //访问嵌入结构体的变量

}
//执行结果:
name : xiaoming

2、嵌入结构体2

package main

import "fmt"

type Person struct {
	name string
}

type Student struct {
	class int
	Person          //我们直接将Person引入到Student
}


func main(){
	s := Student{1,Person{"xiaoming"}}
	fmt.Println("name :",s.name)  //访问时可以直接访问s.name 而不需要s.person.name

}
//执行结果:
name: xiaoming

接口


1、定义接口

在go语言中,接口是定义了类型一系列方法的列表,如果一个类型实现了该接口所有的方法,那么该类型就符合该接口

package main

import "fmt"
import "math"


type Shape interface {
	area() float64

}

type Rectangle struct {
	width float64
	height float64
}

type Circle struct {
	radius float64
}

func (r Rectangle) area() float64 {
	return r.height * r.width
}

func (c Circle) area() float64 {
	return math.Pi * math.Pow(c.radius,2)
}

func getArea(shape Shape) float64 {
	return shape.area()
}

func main(){
	r := Rectangle{20,10}
	c := Circle{4}
	fmt.Println("Rectangle Area =",getArea(r))
	fmt.Println("Circle Area =",getArea(c))

}
//执行结果:
Rectangle Area = 200
Circle Area = 50.26548245743669

2、接口嵌入

package main

import "fmt"
import "math"


type Shape interface {
	area() float64

}

type MultiShape interface {
	Shape            //嵌入式
}

type Rectangle struct {
	width float64
	height float64
}

type Circle struct {
	radius float64
}

func (r Rectangle) area() float64 {
	return r.height * r.width
}

func (c Circle) area() float64 {
	return math.Pi * math.Pow(c.radius,2)
}

func getArea(shape MultiShape) float64 {        //改为MultiShape
	return shape.area()
}

func main(){
	r := Rectangle{20,10}
	c := Circle{4}
	fmt.Println("Rectangle Area =",getArea(r))
	fmt.Println("Circle Area =",getArea(c))

}
//执行结果:
Rectangle Area = 200
Circle Area = 50.26548245743669        //执行结果一致



上一篇:统计请求小命令

下一篇:golang struct

相关内容

热门资讯

五角大楼内部调查泄露:美军空袭... 当地时间2月28日上午11点刚过,伊朗7岁男孩马坎·纳西里的妈妈阿西耶·拉希内贾德接到一通电话。打来...
广西一动物园多只动物下落不明,... 7月7日,广西贵港一村民在村内发现一只斑马。经当地动物园确认,这是园内走失的怀孕斑马。据悉,受台风强...
中国核潜艇发射战略导弹,韩外交... 当地时间7月7日,韩国媒体韩联社援引多方消息源报道称,中方周一向太平洋试射潜射战略导弹前,已通过韩国...
创维电视啪的一声突然黑屏 1、可能是电视机外部插头突然松动,电视电源突然断开,无法供电造成黑屏。2、可能是由于电源插入大功率电...
创维电视机的二维码怎么显示出来 可以打开创维电视遥控器,里面有个智能电视,看到logo后点进去就是二维码了;还有就是把电视机的主页打...
空调E5故障代码怎么回事 原因可能是空调开启了相应的低压工作保护,要确保正常的空调工作电压范围。原因也可能是空调室内机和室外机...
美的空调出现e5是什么故障怎么... 1、一般定速挂机显示E5表示:T1传感器故障——找专业的维修人员对t1传感器进行一个维修或者是更换。...
创维电视的二维码在哪里? 创维电视的二维码在哪里?1、首先打开电视的主页,调出界面,可以看到最左边进行扫码,下载安装电视派。2...
伊朗议长:霸凌与敲诈的时代已经... 伊朗伊斯兰议会议长卡利巴夫8日在社交媒体上发文,强烈谴责美国“严重违反”伊美谅解备忘录。卡利巴夫说,...
致癌油风暴延烧,台民意机构通过... 海峡导报综合报道 台湾“中联油脂”大豆油致癌物超标,民进党当局政策反复、一度盖牌引发民怨,台民意机构...