一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第19天,点击查看活动详情。
结构体
在Go语言中有一个关键字new可以用来实例化结构体。本质上是分配了一个某种类型的内存空间,所以使用new关键字默认就会返回一个指针。使用new创建结构体,默认就是一个指针类型的结构体。
方法
函数和方法的区别:
- 方法限制某个类别的行为,需要指定调用者。函数是一段独立的功能代码,可以直接调用。
- 方法名称可以相同,只要接收者不同就可以,函数命名上不能冲突。
面向对象
面向对象中的三大特征是:
封装在意义上是把许多客观的事物封装成一个抽象的类,把自己的属性 方法只让可信的对象操作。继承子类可以访问父类的属性和方法,子类也可以拥有自己的属性和方法。子类可以重写父类的方法。多态是指一个程序中同名的方法共存的情况,调用者只需使用同一个方法名,系统会根据不同情况,调用相应的不同方法,从而实现不同的功能。多态性又被称为“一个名字,多个方法”。
接口
接口的意义是对其他类型的一个概括,接口内可以定义很多个方法,谁将这些方法实现,就可以认为是实现了该接口。Go语言的多态,主要是通过接口来实现。
使用接口对方法进行约束,然后让方法实现接口,这样规范了方法。通过使用同样的接口名称,但是在调用的时候使用不同的类,实现执行不同的方法。这样就实现了Go语言中的多态。
反射
Go语言官方文档中是这样定义反射,在计算机领域中反射是一种让程序通过类型理解其自身的结构的一种能力。其实反射本质上就是在程序运行时候,来获取对象的类型信息或者结构,进行访问或者修改。
Go语言在运行期使用reflect包访问程序的反射信息。
Map、Slice、Chan 这几个也都属于引用类型的数据,使用时使用的都是这些类型的指针。但是在上面种类定义的时候这些都有自己的种类。
通过以下方法 可以从反射对象reflect.Value中获取原始值。
.Interface()将值以interface{}任意类型返回。- 还有各自对应的类型,
.Int()、.Uint()、.Floact()、.Bool()、.Bytes()、.String()。