go语言 继承

基础

  1. 本质就是结构体
package main
import "fmt"

//父类(父结构体)
type Person struct {
	id   int
	name string
	age  int
}
//子类(子结构体)
type Student struct {
	Person //也可取变量名(p Person)
	class int
	score int
}

func main() {
	//创建对象(结构体)
	var stu Student

	//student继承与父类person 可以直接使用父类的结构体成员
	//stu.Person.name = "张三"
	//stu.Person.age = 18
	//stu.Person.id = 1001

	//stu.p.name
	//stu.p.age
	//stu.p.id

	//直接按继承语法来
	stu.name = "wang"
	stu.age = 10
	stu.id = 1001

	stu.class = 302
	stu.score = 99
}

同名覆盖

package main

import "fmt"

type person struct {
	name string
}

type student struct {
	person
	name  string
}

func main() {
	//对象初始化
	//var stu student
	子类赋值
	子类和父类结构体有相同的成员名 默认赋值为子类 采用就近原则
	//stu.name = "瞎子"
	
	父类赋值
	//stu.person.name = "李青"
	fmt.Println(stu.name)
	fmt.Println(stu.person.name)


	
}

指针成员

package main

import "fmt"

type person1 struct {
	id   int
	name string
}

type student1 struct {
	*person1 //指针作为匿名字段
	class int
}

func main() {

	var stu student1
	stu.class = 301
	//stu.person1是一个指针类型 默认值为nil 0x0
	//需要对指针进行创建空间  new(person1)
	//stu.person1=new(person1)
	(*stu.person1).name="wang"
	//stu.name = "wang"
	stu.person1 = &person1{1001, "wang"}

多继承

package main

import "fmt"

type person2 struct {
	name string
	age  int
}
type person3 struct {
	id   int
}

type student2 struct {
	//结构体成员为多个匿名字段
	person2
	person3
	class int
}

func main() {
	//var stu student2
	//
	//stu.person3.id = 1001
	//stu.person2.name = "wang"
	//stu.age = 10
	//stu.class = 300
	//stu.sex = "男"
	stu:=student2{person2{"wang",12,},person3{100},100,-5}
	fmt.Println(stu)
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值