5.6. 没有对象,new一个,go

未匹配的标注

面向对象 (Object Oriented,OO) 的思想对软件开发相当重要,它的概念和应用甚至已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD 技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。

严格来说,go不属于面向对象的语言(暂不支持继承),但go允许面向对象的编程风格。今天我们就来实现一个面向对象的demo。


实在没想到好一点的例子,不知道大伙有没有对象,不如以girl friend为例来弄个demo 吧,女同学请new一个boyfrind。当然了,new什么都行,随你喜欢…….

我们定义一个女朋友对象:

type GirlFriend struct {
    height    int // 身高
    weight    int // 体重
    age       int // 年龄
    name      string // 姓名
    content   string // 结束语
    greetings string // 问候语
}

我们可以自定义身高,体重,年龄,姓名:

func (gf *GirlFriend) SetHeight(v int) {
    gf.height = v
}

func (gf *GirlFriend) SetWeight(v int) {
    gf.weight = v
}

func (gf *GirlFriend) SetAge(v int) {
    gf.age = v
}

func (gf *GirlFriend) SetName(v string) {
    gf.name = v
}

喜欢使用链式操作的可以这么来,把女朋友return回去即可:

func (gf *GirlFriend) SetContent(v string) *GirlFriend {
    gf.content = v
    return gf
}

func (gf *GirlFriend) SetGreeting(v string) *GirlFriend {
    gf.greetings = v
    return gf
}

我们当然还有实现一下,没有女朋友,new一个:

func NewOne() *GirlFriend {
    return &GirlFriend{}
}

new出来了,当然要秀一下:

func (gf *GirlFriend) Show() {
    fmt.Println(gf.greetings + "我是" + gf.name + ",今年" + strconv.Itoa(gf.age) + "岁,身高" + strconv.Itoa(gf.height) + "cm,体重" + strconv.Itoa(gf.weight) + "kg。" + gf.content)
}

我们来运行一个:

package main

import (
    "demo5-OOP/oop"
)

func main() {
    gf := oop.NewOne()
    gf.SetName("Lily")
    gf.SetHeight(170)
    gf.SetWeight(50)
    gf.SetGreeting("hello,").SetContent("thanks for your great creavity!").SetAge(24)
    gf.Show()
}

这一篇比较简单,例子呢,仅仅是玩笑,不可当真,女朋友new是不可行的,还是要主动去追的。这里主要是展示一下go的面向对象实现,在使用其他库的过程中应该有注意到一些模块使用了面向对象的实现,希望大家去做一些抽象,在自己的项目合适的地方去实现一下,让自己的代码更优雅、更健壮,也希望大家都能找到对的人,一起new一个baby。

完整代码点击进github,欢迎star


关注和赞赏都是对笔者最大的支持
关注和赞赏都是对笔者最大的支持

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~