Go语言实训笔记(三)

本文为Go语言实训笔记的第三篇,深入探讨Go语言的并发特性、接口使用以及错误处理。通过实例解析Go的goroutine和channel,展示如何构建高效并行程序。同时,介绍Go的接口动态类型转换和错误处理的最佳实践,帮助开发者提升Go编程能力。
一、面向对象意义:
	1)面向对象的对立面是面向过程:
	    ① 面向过程是以函数为核心.
		
		② 如果要开展大型工程,就需要管理更多的函数.
		
		③ 面向过程的语言不适合开展大型项目.
	
	2)面向对象的好处:
		① 面向对象是以类/结构体为核心的.
		
		② 类/结构体是对函数的二次封装
		
		③ 相对于管理海量的函数,你只需要管理少量的类/结构体.
		
		④ 面向对象使大型工程的开发变得简单.
	特性:
	1 封装:将业务相近的变量,函数封装为结构体(相当于java中的类),化繁为简,减少直接管理的成员数.
		
		① 封装结构体的方法:无论方法的主语定义为值类型还是指针类型,对象值和对象指针都能正常访问.通常会将主语定义为指针类型.
		
		② 创建对象实例,可以通过对象的指针去访问对象的属性和方法.
		
		③ 创建对象时可以按照属性定义的顺序为属性赋值,但赋值的顺序必须和定义属性的顺序完全一致.
		
		④ 值传递和指针传递的区别:值传递传递的是副本,引用(指针)传递的才是真身.
		
		1)方法要求用值传递就必须是值传递.
		
		2)方法要求指针传递就必须是指针传递.
		
	2 继承: 将公共的部分提取到父类,减少代码的重复,降低代码的冗余.
		
		① 子类默认拥有父类的全部属性和方法
		
		② 继承的目的是为了发展,增加新的属性和方法,修改父类方法.
		
		③ 只要持有父类的声明,就继承了父类.
		
	3 多态:一个父/接口类有多种不同的具体子类的实现.
		
		① 共性:通过调用父类方法去调度子类实列.
		
		② 个性:不同子类对父类方法的具体实现各不相同.
	4 抽象:父类接口只定义方法,不做具体实现.
		
		① 抽象方法:对方法只定义不实现.
		
		② 接口:接口中的方法全部都是抽象方法,在接口中不做具体实现.
		
		③ 结构体实现接口中的全部抽象方法,就称该结构体实现了接口.
		
		接口的继承:java语言中实现接口必须要实现接口中的所有方法,go语言中是软实现,若果没有完全实现接口中的所有方法,那么该实列的子类对象.
		
		① 显示继承,直接在子类中对接口进行声明,直接调用接口的方法.
		
		② 隐式继承,没有直接对接口进行声明,但是实现了接口中的方法.. 类型断言(类型判断)的方法
	类型断言的作用是在多态中找出具体的对象. 
	1 大面积类型判断,判断接口实例的具体方法 switch xxx (type){case * Worker}....switch判断方式进行判断,大面积的判断.
	
	2 重点类型判断,对具体的对象进行判断. if coder,ok = xxx.(*Coder);ok{ 函数体}else{函数体}if语句进行判断,判断转化是否成功,如果成功,返回,如果不成功else,将父类降级为子类,调用子类特有的方法.
		类型断言的注意事项:① 创建子类时,具体用什么类/结构体,就只能断言为什么类/结构体.
						   ②  不能因为继承层级比较多,就随意地断言为其中的任意一种父类.
	3 面向对象重难点分析:func(p *Person)Eat(){...}这样方法,使用指针和值都可以调用,建议是尽量用指针,能最大程度地避免对p的修改不影响到Person的真身;
		② 定义方法是,方法的主语最好用指针,最大程度的减小值传递的拷贝效应的负面影响.
		③ 对象做陈参数时,值传递是拷贝式的;指针传递(地址/引用传递传的才是真正的值.
		④ 在oop中,值能做的事情指针都能做,而指针能做的事情值不是所有都能做.
		⑤ 做主语时,使用值或指针的效果一致,但做参数的时候,一个是拷贝式值传递(不会影响本身),一个是引用传递(会直接影响本身,修改地址值).
	创建对象的方法:
		① 创建空白对象: p:=Person{}
		② 创建对象时,有选择地给指定属性赋值:p:=Person{age:20,name:"张三"}
		③ 创建对象时,完整有序地给所有属性赋值:p:=Person{"张三",20,true,[]String{"撸代码","完美的撸代码"}//撸代码是爱好}
		④ 通过内建函数创建对象指针:pPtr:=new(Person) new(Type)*Type用于创建结构体的实列指针,new的参数是结构体的名字,返回的是所有属性都为默认值的对象指针.
		⑤ 命名尽量要能够望文生义,例如:personPtr,它是一个对象指针,而非实例.
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值