第6章 方法
从90年代开始,面向对象编程(OOP)就成了称霸工程界和教育界的编程范式,所以之后几乎所有大规模被应用的语言都包含了对OOP的支持,Go语言也不例外
关于OOP,其实没有明确定义,但是大概的意思是,一个对象其实也就是一个简单的值或者一个变量,在这个对象中会包含一些方法,而一个方法则是一个一个和特殊类型相关联的函数,一个面向对象的程序会用方法来表达其属性和对应的操作,这样使用这个对象的用户就不需要直接去操作对象,而是借助方法来做这些事情
在早些章节,其实我们已经使用过标准库提供的一些方法,比如time.Duration这个类型的Seconds方法
const day = 24*time.Hour
fmt.Println(day.Seconds())//86400
在2.5节中,我们定义了一个方法,Celsius类型的String方法
func (c Celsius) String() string{
return fmt.Sprintf("%g˚C",c)
}
在本章中,OOP编程的第一方面,我们会展示如何有效的定义和使用方法,我们会覆盖到OOP编程的两个关键点,封装和组合
6.6 封装
一个对象的变量或者方法对调用方是不可见的话,一般就被定义为“封装”。封装有时候也被叫做信息隐藏,同时也是面向对象编程的最关键的一个方面
Go语言只有一种控制可见性的手段:使用大小写字母
这种限制包成员的方式同样适用于struct或者一个类型的方法,如果我们想要封装一个对