标签:int 颜色 obj 过程 函数 空白 main happy imp
package main import "fmt" /* 面向过程编程:调度大量的变量、函数 ---------- 面向对象编程(OOP=Object Oriented Programming) 对象=结构体/类的实例 对象.属性(面向过程中调度变量) 对象.方法(面向过程中调度汗水) */ type Dog struct { //结构体的属性 name string age int gender bool //结构体的方法 } func (d *Dog) Eat(food string) { fmt.Printf("%s在啃%s", d.name, food) } func (d *Dog) Play() { fmt.Printf("%s正在Happy\n", d.name) } func (d *Dog) Bite(who string) { fmt.Printf("本汪%s给%s一些颜色看看\n", d.name, who) } func main() { //dog := GetDog1() //dog := GetDog2() //dog := GetDog3() //dog := GetDog4() dog := NewDog("臭皮", 8, true) //访问属性 fmt.Println(dog.name) //访问方法 dog.Bite("大官人") } /* 创建对象方式5: 使用工厂模式 */ func NewDog(name string, age int, gender bool) *Dog { dogPtr := new(Dog) dogPtr.name = name dogPtr.age = age dogPtr.gender = gender //假设还有给狗开光、打疫苗、上牌照等等复杂流程... return dogPtr } /* 创建对象方式4: 通过内建函数new获得对象指针(不必担心得到的是“副本”) */ func GetDog4() *Dog { //创建一条狗,获得其指针 dogPtr := new(Dog) //通过指针访问属性和方法,与通过对象访问,语法是完全一致的 dogPtr.name = "小黑" dogPtr.age = 8 dogPtr.gender = true return dogPtr } /* 创建对象方式3: 有选择地给某些属性赋值 */ func GetDog3() Dog { dog := Dog{age: 8, name: "大黄"} return dog } /* 创建对象第二种方式: 依次给所有属性赋值 */ func GetDog2() Dog { dog := Dog{"臭皮", 8, true} return dog } /* 第一种创建对象的方式: 先创建空白对象,再一一给属性赋值 */ func GetDog1() Dog { //创建一条狗的对象 dog := Dog{} //给属性赋值 dog.name = "旺财" dog.age = 8 dog.gender = true return dog }
GO语言面向对象01---封装属性与创建对象的方法与工厂模式
标签:int 颜色 obj 过程 函数 空白 main happy imp
原文地址:https://www.cnblogs.com/yunweiqiang/p/11863362.html