GO语言面向对象
来源:互联网 发布:js ul li点击显示隐藏 编辑:程序博客网 时间:2024/05/17 03:40
go语言中并没有像C++,Java语言中这类的Class,它只含有像C语言中的结构体,用结构体和指针等特性,完成一个类的作用,很巧妙的使用了指针和结构体,不仅是go的面向对象,包括go语言中的map等操作都是借助了结构体。其实,说白了,C++、Java等面向对象的语言中,类的底层实现就是结构体,对象的引用就是指针,只是语言把他们封装起来了而已。然而这使得很多人刚接触面向对象的时候很不理解这些东西。
下面,说所面向对象在go中的写法:
如果我们要再Java中定义一个Rect,可以求其面积,我们应该这么写
1 public class Rect {2 public int x;3 public int y;4 public int Area() {5 return x*y;6 }7 }
很简单,那么Go语言中怎么做呢?Go中并不存在所谓的类,所有的类都是用结构体表示的,所以要写一个类,我们先得定义一个结构体:
1 type Rect struct {2 x, y int3 }
这是一个Rect的结构体,那么一个类中,不仅要存在变量,还要有成员函数,那么go的成员函数是这么写的:
1 func (r *Rect) Area() int {2 return r.x*r.y3 }
这个成员函数的功能是求面积的,显然,这个成员函数值对Rect的结构体适用,这样就实现了所谓的封装,那么,我们如何去创建并初始化类的实例呢
go语言提供了很多方式:
1 rect :=new(Rect)2 rect :=&Rect{}3 rect :=&Rect{1,2}4 rect :=&Rect{x:3,y:4}
那么,一遍情况下,如果没有指定成员变量的大小,go语言会默认初始化成员变量为0,bool类型的为false。
那么,构造函数呢?
我们可以这么来写:
1 func NewRect(x,y int) *Rect {2 return &Rect{x,y}3 }
其实,这也是我们平时new一个对象时候的真正操作,只是go把他真正展现给我们了。
看到这里,我们似乎还有一个疑问,那就是,像java、C++中对于可见性的描述呢,go语言中不存在public等关键字,go语言中直接选择用字母大小写控制。
一个变量以大写字母开头则表示对其他包可见,如果想要不可见,那么使用小写字母即可,但是go语言中的可见性控制只是针对包的,并不针对类,也就是,同一个包下的类都是可见的。这个时候我们就可以知道了为什么输出语句是这样写的了吧:
1 fmt.Println("hello world")
因为此函数对其他包是可见的。
- go语言面向对象
- go语言 面向对象
- GO语言面向对象
- go语言的面向对象
- Go语言面向对象编程
- go语言中的面向对象
- Go语言学习 面向对象
- GO语言中的面向对象与接口
- Go语言与面向对象编程
- 神奇的go语言(面向对象)
- GO语言面向对象编程之方法
- 模仿go语言的C语言面向对象范式
- 许式伟《Go语言编程》样章“面向对象编程”
- Go语言学习笔记--类型、指针、面向对象
- 许式伟《Go语言编程》样章“面向对象编程”
- Go语言中的复合类型及面向对象思想
- Go语言学习(十一)面向对象编程-类型系统
- Go语言学习(十二)面向对象编程-结构体
- 动态获取屏幕宽度,并减去了浏览器左边滚动条的宽度
- OpenGL的简单研究-开端
- kettle--从java中获取参数
- Java设计模式之策略模式
- ACM常用算法
- GO语言面向对象
- 如何实现表格内的内容呈现...省略符
- RN使用ART库画扇形+动画
- Go语言接口
- Android客户端连接服务器端,向服务器端发送请求HttpURLConnection
- Kafka入门理论学习
- laravel框架中所用到的依赖注入
- 电脑小结:怎样一个软件是32位还是64位
- ionic2实现通讯录,联系人搜索功能