golang OOP面向对象

简介:

摘自:http://www.01happy.com/golang-oop/

 

golang中并没有明确的面向对象的说法,实在要扯上的话,可以将struct比作其它语言中的class。

类声明

1
2
3
4
5
type Poem struct {
     Title  string
     Author string
     intro  string
}

这样就声明了一个类,其中没有public、protected、private的的声明。golang用另外一种做法来实现属性的访问权限:属性的开头字母是大写的则在其它包中可以被访问,否则只能在本包中访问。类的声明和方法亦是如此。

类方法声明

1
2
3
func  (poem *Poem) publish() {
     fmt.Println( "poem publish" )
}

或者

1
2
3
func  (poem Poem) publish() {
     fmt.Println( "poem publish" )
}

和其它语言不一样,golang声明方法和普通方法一致,只是在func后增加了poem *Poem这样的声明。加*和没有加*的区别在于一个是传递指针对象,一个是传递值对象。

实例化对象

实例化对象有好几种方式

1
2
3
4
5
6
7
8
poem := &Poem{}
poem.Author = "Heine"
poem2 := &Poem{Author: "Heine" }
poem3 := new(Poem)
poem3.Author = "Heine"
poem4 := Poem{}
poem4.Author = "Heine"
poem5 := Poem{Author: "Heine" }

实例化的时候可以初始化属性值,如果没有指明则默认为系统默认值

加&符号和new的是指针对象,没有的则是值对象,这点和php、java不一致,在传递对象的时候要根据实际情况来决定是要传递指针还是值。

tips:当对象比较小的时候传递指针并不划算。

构造函数

查看官方文档,golang并没有构造函数一说。如果一定要在初始化对象的时候进行一些工作的话,可以自行封装产生实例的方法。

1
func  NewPoem(param string, p ... interface {}) *Poem

示例:

1
2
3
4
5
6
7
func  NewPoem(author string) (poem *Poem) {
     poem = &Poem{}
     poem.Author = author
     return
}
 
poem6 := NewPoem( "Heine" )







本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/bonelee/p/6592129.html ,如需转载请自行联系原作者

相关文章
|
12月前
|
Go 数据库
Golang面向对象小案例(未连接数据库)
Golang面向对象小案例(未连接数据库)
35 0
|
Cloud Native Java 编译器
100天精通Golang(基础入门篇)——第21天:Go语言面向对象(OOP)核心概念解析
100天精通Golang(基础入门篇)——第21天:Go语言面向对象(OOP)核心概念解析
122 0
|
存储 Kubernetes 算法
【Golang 快速入门】基础语法 + 面向对象
Golang 语言特性 Golang 的优势 Golang 的应用场景 Golang 的不足 基础语法 main 变量 常量与 iota string 字符串遍历 strings 包 bytes 包 strconv 包 unicode 包 循环语句 range 函数 多返回值 init 函数 闭包 import 导包 匿名函数 指针 defer 切片 slice 数组 slice slice 操作 ... map map 的声明 map 的使用 error 面向对象编程 type 方法 struct 封装
190 0
|
Go C++ C语言
Golang之面向对象
一、method         带有接收者的函数,称之为method。         假设定义了一个struct叫长方形,现在要计算它的面积,那么按照面向过程的思路会如下实现:         packeage main         import "fmt"    ...
1223 0
|
7天前
|
存储 前端开发 Go
Go语言中的数组
在 Go 语言中,数组是一种固定长度的、相同类型元素的序列。数组声明时长度已确定,不可改变,支持多种初始化方式,如使用 `var` 关键字、短变量声明、省略号 `...` 推断长度等。数组内存布局连续,可通过索引高效访问。遍历数组常用 `for` 循环和 `range` 关键字。
|
9天前
|
Go 调度 开发者
Go语言中的并发编程:深入理解与实践###
探索Go语言在并发编程中的独特优势,揭秘其高效实现的底层机制。本文通过实例和分析,引导读者从基础到进阶,掌握Goroutines、Channels等核心概念,提升并发处理能力。 ###
|
4天前
|
存储 安全 算法
Go语言是如何支持多线程的
【10月更文挑战第21】Go语言是如何支持多线程的
101 72
|
5天前
|
安全 大数据 Go
介绍一下Go语言的并发模型
【10月更文挑战第21】介绍一下Go语言的并发模型
24 14
|
4天前
|
安全 Go 开发者
go语言并发模型
【10月更文挑战第16天】
18 8
|
4天前
|
Java 大数据 Go
Go语言:高效并发的编程新星
【10月更文挑战第21】Go语言:高效并发的编程新星
19 7