Golang没有类,而是松耦合的类型、方法对接口的实现。
- 封装(数据隐藏):使用驼峰,public首字母大写,private首字母小写。
- 1)包范围内的:通过标识符首字母小写,
对象只在它所在的包内可见;
- 2)可导出的:通过标识符首字母大写,
对象对所在包以外也可见;
- 继承:用组合实现:内嵌一个(或多个)包含想要的行为(字段和方法)的类型;多重继承可以通过内嵌多个类型实现。
- 多态:用接口实现:某个类型的实例可以赋给它所实现的任意接口类型的变量。类型和接口是松耦合的,并且多重继承可以通过实现多个接口实现。Go 接口不是 Java 和 C# 接口的变体,而且:接口间是不相关的,并且是大规模编程和可适应的演进型设计的关键。
动态类型(Duck Typing)
- 静态类型就是变量声明的时候的类型,如
var age int其中int是静态类型。
- 动态类型是在运行时才能确定具体的数据类型。
var i interface{} //i 的静态类型就是 interface{}
i = 18 //i 的静态类型就是 interface{},动态类型变成了 int 类型。
i = "Golang Learn" //i 的静态类型就是 interface{},动态类型变成了 string 类型。
动态类型的优势在于它的灵活性。我们可以编写通用的代码来处理不同类型的数据,动态类型常用于需要处理多种类型数据的场景。
例如,我们编写一个函数,需要接收不同类型的数据,并针对这些数据执行相应的操作。
使用动态类型,我们可以将函数参数定义为一个接口类型,从而使得函数能够接收任意实现该接口的类型。