这是我参与「第五届青训营 」伴学笔记创作活动的第2天
前言
Go语言是一种静态类型的编程语言,并且没有类的概念,而是通过结构体来实现面向对象编程。结构体可以定义方法来模拟类的行为,同时可以定义结构体之间的关系,来实现继承和多态。 Go语言中还有接口,这是一种非常重要的面向对象编程概念,它可以用来描述类型的行为,并且可以在运行时动态检查类型的实现。
结构体
结构体是Go语言中一种用来描述对象属性和行为的类型。下面是一个简单的结构体定义示例:
type Person struct {
Name string
Age int
}
// 创建实例
var p Person = Person{"zhangsan", 18}
结构体可以定义方法,这些方法可以像类的方法一样被对象调用:
func (p *Person) SayHello() {
fmt.Printf("Hello, my name is %s\n", p.Name)
}
p.SayHello() // Hello, my name is zhangsan
Go语言有类似于其他面向对象语言中的private和public概念,但是实现方式不同。
在Go语言中,如果一个标识符(如变量、类型、函数等)的名称是小写字母开头的,那么它就是private的,只能在定义该标识符的包内部被访问。如果一个标识符的名称是大写字母开头的,那么它就是public的, 可以被其他包访问。
比如,如果我们定义了一个名为person的结构体,其中有两个字段name和age,那么name和age就是private的,只能在定义该结构体的包内部被访问。如果我们把name和age的首字母改为大写,则Name和Age就是public的,可以被其他包访问。
这样规定对于结构体的字段,函数,类型等都是适用的。
有了这个特点,我们就可以实现封装,就像java那样,将结构体中的字段首字母小写,另外写一些getter和setter。