go语言面向对象

来源:互联网 发布:英国亚马逊海淘 知乎 编辑:程序博客网 时间:2024/04/30 00:09

go语言可通过struct声明新的类型

新建一个类型person

type Person struct {    name string    age int}var p1 Personp1.name = 'liming'p1.age = 18

新建一个类型student,可以通过匿名字段将person所有字段隐式引入student

type Student struct {    Person  //隐式引入    school string    name string}s1 := Student{Person{'zhangliang',23}, 'hign school','new name'}s1.age   //23  可直接访问Person的字段s1.name  //new name 最外层优先访问,重载s1.Person.name //zhangliang 通过匿名字段访问

给函数添加接收者struct,或者说给struct添加方法

//此处传递是按值传递的,操作的是副本,若receiver为指针,则按引用传递,操作的是原实例对象func (s Student) isAdult() boolean {    if s.age >= 18 {  //可以直接访问struct的字段        return true    }    return false} s1.isAdult()  //truefunc (s *Student) changeAge(newAge int) boolean {    s.age = newAge }s1.changeAge(23)

方法的和字段的继承一样,都是通过匿名字段

type HignSchoolStudet {    Student    professional string}//可函数重载func (h *HignSchoolStudet) changeAge(newAge int) boolean {    h.age = newAge + 12}h1 := HignSchoolStudet{Student{Person{'zhangliang',23}, 'hign school'},'math'}

interface接口,提供通用方法的组合,提供了动态类型

type People interface {    changeAge()}var i Peoplei = s1s1.changeAge()i = h1h1.age
0 0
原创粉丝点击