go基础入门(五)
时间:2022-06-26
本文章向大家介绍go基础入门(五),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
之前的四篇文章我们学习的都是一些常规的语法特性,比如:基础数据类型,函数,异常处理等,今天我们说说表现力更加丰富的struct。关于struct这部分我们可能要分两到三节来叙述,至于大纲内容就保持神秘一下。好了开始我们的第一个struct吧。
来看一下第一个例子
type Person struct {
Name string
Age int
}
func (person Person) show() {
fmt.Println("name:"+person.Name, "age:"+strconv.Itoa(person.Age))
}
func main() {
person := Person{Name: "Lee", Age: 30,}
person.show()
}
我们定义了一个简单的结构体Person添加了结构体方法实现了简单的输出信息。而对于Person来说可能会衍生出更加复杂具体的:学生 老师 工人等这些衍生出的职业会附带更加复杂的关系,那么go是怎么解决这些更加复杂的衍生关系呢?
1 继承
2 组合
继承
go中的结构体可以实现继承.我们拿Woker作为实例扩展:添加WokerId作为在工厂中的编号
type Worker struct {
Person
WorkId string
}
func main() {
person := Person{Name: "Lee", Age: 30,}
worker := Worker{Person: person, WorkId: "W123"}
worker.show()
}
上栗中我们看到woker完美的继承了show方法,但是只是展示了父结构体的信息而确实woker的信息。那么如何实现完整信息输出呢?当然是需要覆写方法啦
func (worker Worker)show(){
fmt.Println("workerId:"+worker.WorkId)
worker.Person.show()
}
组合
上面我们使用继承实现了衍生的扩展,接下来我们使用组合来打到衍生的目的:学生有学号和所属学院。我们用组合看看
type Student struct {
Person Person
StudId string
Depart string
}
//实例
stu:=Student{Person:person,StudId:"Stu123",Depart:"IT"}
stu.Person.show()
采用组合的方式对于初始化我们看到方式是类似,但是由于是组合不会将自然的继承来Person的方法,只能通过调用成员来去调用对应的实现相应的输出
func (stu Student)show(){
fmt.Println("stu:",stu.StudId,"depart:"+stu.Depart)
stu.Person.show()
}
- 开源组件photoView学习
- ViewPagerIndicator+viewpager指示器详解
- 实现去哪儿来回机票选择的view
- 解决水平ListView在ScrollView中出现的滑动冲突
- Android逆向分析(2) APK的打包与安装背后的故事
- Activity之间传递大数据问题
- React Native入门(二)Atom+Nuclide安装、配置与调试
- React Native入门(一)环境搭建与Hello World
- android 自定义Viewpager实现无限循环
- Android内存优化(二)DVM和ART的GC日志分析
- Android Material Design之Toolbar与Palette实践
- android-async-http框架源码分析
- 使用Buck构建Android工程
- android 实现淘宝收益图的折线
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法