您好,登录后才能下订单哦!
密码登录
            
            
            
            
        登录注册
            
            
            
        点击 登录注册 即表示同意《亿速云用户服务条款》
        结构体的嵌入类型
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 : xiaoming2、嵌入结构体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.265482457436692、接口嵌入
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        //执行结果一致免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。