美文网首页
go面向对象-初始化

go面向对象-初始化

作者: 夜空中乄最亮的星 | 来源:发表于2018-02-12 10:48 被阅读0次

Go语言的结构体(struct)和其他语言的类(class)有同等的地位,但Go语言放弃了包括继承在内的大量面向对象特性,只保留了组合(composition)这个最基础的特性。组合甚至不能算面向对象特性,因为在C语言这样的过程式编程语言中,也有结构体,也有组合。组合只是形成复合类型的基础。
上面我们说到,所有的Go语言类型(指针类型除外)都可以有自己的方法。在这个背景下,
Go语言的结构体只是很普通的复合类型,平淡无奇。例如,我们要定义一个矩形类型:

type Rect struct {
      x, y float64
      width, height float64
}

然后我们定义成员方法 Area() 来计算矩形的面积:

func (r *Rect) Area() float64 {
    return r.width * r.height
}

可以看出, Go语言中结构体的使用方式与C语言并没有明显不同。

初始化

在定义了 Rect 类型后,该如何创建并初始化 Rect 类型的对象实例呢?这可以通过如下几种方法实现:

rect1 := new(Rect)
rect2 := &Rect{}
rect3 := &Rect{0, 0, 100, 200}
rect4 := &Rect{width: 100, height: 200}

在Go语言中,未进行显式初始化的变量都会被初始化为该类型的零值,例如 bool 类型的零
值为 false , int 类型的零值为0, string 类型的零值为空字符串。

构造函数

在Go语言中没有构造函数的概念,对象的创建通常交由一个全局的创建函数来完成,以
NewXXX 来命名,表示“构造函数” :

func NewRect(x, y, width, height float64) *Rect {
      return &Rect{x, y, width, height}
}

这一切非常自然,开发者也不需要分析在使用了 new 之后到底背后发生了多少事情。在Go语言中,一切要发生的事情都直接可以看到。

相关文章

  • go面向对象-初始化

    Go语言的结构体(struct)和其他语言的类(class)有同等的地位,但Go语言放弃了包括继承在内的大量面向对...

  • struct

    面向对象编程 Go支持面向对象编程特性,但和传统面向对象编程是有区别的,Go并不是纯粹的面向对象语言。 Go没有类...

  • Go基础语法(十二)

    面向对象编程 Go 并不是完全面向对象的编程语言。 Go 官网的 FAQ 回答了 Go 是否是面向对象语言,摘录如...

  • 第13章-OOP面向对象编程

    面向对象(OOP) go并不是一个纯面向对象的编程语言。在go中的面向对象,结构体替换了类。 Go并没有提供类cl...

  • Golang(十三) OOP面向对象编程

    面向对象(OOP) go并不是一个纯面向对象的编程语言。在go中的面向对象,结构体替换了类。 Go并没有提供类cl...

  • 第十六章:Go语言面向对象编程

    1. GO语言OOP概述 Go语言不是纯粹的面向对象的语言,准确是描述是,Go语言支持面向对象编程的特性.Go语言...

  • 26. 结构体取代类

    26. 结构体取代类 Go 支持面向对象吗? Go 并不是完全面向对象的编程语言。Go 官网回答了 Go 是否是面...

  • go day06 面向对象 匿名组合 方法、方法集、方法

    面向对象 对于面向对象编程的支持Go语言设计的非常简洁而优雅。因为,Go语言并没有沿袭传统的面向对象编程中的诸多概...

  • 使用 make 还是 new

    在 Go 中初始化变量的时候,会用到 make 和 new,如果学习过其他的面向对象语言,比如 Java,可能就会...

  • golang faq 精选

    go 是面向对象语言吗? 是也不是说是 因为 go 有 类型和方法 支持面向对象的方式编程。说不是 因为go没有...

网友评论

      本文标题:go面向对象-初始化

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