美文网首页
Golang的面向对象

Golang的面向对象

作者: 茶艺瑶 | 来源:发表于2020-01-16 09:57 被阅读0次

在golang中,面向对象一直是一个纠纷,怎么说好呢。就是官网说没有面向对象这个概念,可是又给出了类似面向对象的概念。

和其他语言不同Golang只有接口和结构体分别为 interface 和 struct

我们以javascript es6为例子做对比


class ClassName {
    public name;  // 成员属性
}

我们一个类有哪些属性,一般的语言和以上的写法是差不多的。可是到了golang的话,就有点变味了。


type ClassName struct {
      name string;
}

我们有时候还需要在类中添加行为(方法)。我们在其他语言通常是

class ClassName {
    public name;  // 成员属性

   public setName(name){}

}

和在golang的写法,你先要定义一个结构体,然后再结构体外面定义行为方法

type ClassName struct {
      name string;
}

func (c *ClassName) setName (name string) {}

func main(){
    c := ClassName{}
    c.setName("M")
}

我们有需要还需要定义接口来实现多态,在golang中,实现接口并没有强制约束,只要你实现了我的方法,我就认为你实现了我的接口

type Foo interface{
    qux()
}

type Bar struct {}
type Baz struct {}

func (b Bar) qux() {}
func (b Baz) qux () {}

func main() {
    var f Foo
    f = Bar{}
    f = Baz {}
}

相关文章

  • golang 使用组合的方式实现继承

    摘要 golang并非完全面向对象的程序语言,为了实现面向对象的继承这一神奇的功能,golang允许struct间...

  • Golang 学习笔记(05)—— 面向对象编程

    本文为转载,原文:Golang 学习笔记(05)—— 面向对象编程 前言 golang是面向过程的语言,go中没有...

  • Golang的面向对象

    在golang中,面向对象一直是一个纠纷,怎么说好呢。就是官网说没有面向对象这个概念,可是又给出了类似面向对象的概...

  • Golang 面向对象编程

    Golang 面向对象编程 go语言中,虽然没有明确提出面向对象的概念,但是基于已有的语法设计,我们也可以写出面向...

  • golang的父子类函数重载

    golang的父子类函数重载 首先声明一点golang没有传统面向对象语言的父子类关系,golang使用struc...

  • Go核心编程-面向对象 [OOP]

    Golang也是支持面向对象(OOP)编程特性的语言,但是Golang中没有类(class),而Go语言的结构体(...

  • Golang学习笔记之3:结构体、面向对象思想

    Golang结构体及面向对象思想 面向对象: 面向对象:不是一门语言,也不是一门技术,是一种编程思路,把每一步封装...

  • golang 面向对象特性

    和其他高级语言一样,golang 也支持面向对象编程,支持得比较简单,有些特性并不支持,但是够用了 接口 接口使用...

  • golang面向对象特性

    和其他高级语言一样,golang 也支持面向对象编程,支持得比较简单,有些特性并不支持,但是够用了 接口接口使用 ...

  • golang-面向对象

    思考:go语言不支持继承与多态的优点与缺点是什么 go语言只支持封装,不支持继承与多态 go语言没有class,只...

网友评论

      本文标题:Golang的面向对象

      本文链接:https://www.haomeiwen.com/subject/eyffzctx.html