go语言面向对象
2016-05-10 23:45
399 查看
go语言可通过struct声明新的类型
新建一个类型person
新建一个类型student,可以通过匿名字段将person所有字段隐式引入student
给函数添加接收者struct,或者说给struct添加方法
方法的和字段的继承一样,都是通过匿名字段
interface接口,提供通用方法的组合,提供了动态类型
新建一个类型person
type Person struct { name string age int } var p1 Person p1.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() //true func (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 People i = s1 s1.changeAge() i = h1 h1.age
相关文章推荐
- [SCU 4497] GooZy的游戏时间 (基于搜索时间的剪枝)
- django写的留言板
- Google Chrome浏览器 控制台全解析
- 高德,百度,Google地图定位偏移以及坐标系转换
- 《15个提高Google搜索的技巧》
- 《15个提高Google搜索的技巧》
- HDU 1847-Good Luck in CET-4 Everybody!(博弈-SG函数/找规律)
- bzoj 1419: Red is good
- 局部敏感哈希LSH原作者的论文和程序LSH Algorithm and Implementation (E2LSH)
- HDU 5546 Ancient Go (ccpc2015南阳G)
- Django流程
- 开源新闻速递:Google Play 中发现可绕过审查的高危木马
- 开源新闻速递:Google Play 中发现可绕过审查的高危木马
- 看看Google用户体验十大设计原则
- HDU-1824-Let's go home(2-SAT)
- Django 请求处理过程
- GoogleLog(GLog)源码分析
- 类别---category
- stackoverflow一个很好的golang closure example
- go closure