文档章节

Go 语言初级教程之七[面向对象]

刘赤龙
 刘赤龙
发布于 2010/06/08 16:01
字数 368
阅读 383
收藏 1

面向对象
Go语言支持类似于C语言中使用的面向对象风格。数据被组织成structs,然后定义操作这些structs的函数。类似于
Python,Go语言提供 了定义函数并调用它们的方式,因此语法并不会笨拙。

Struct类型
定义一个新的struct类型很简单:
 

  1. type Point struct {
     
  2.   x, y float64
     
  3. }


现在这一类型的值可以通过内建的函数new来分配,这将返回一个指针,指向一块内存单元,其所占内存槽初始化为
零。
 

  1. var p *Point = new(Point)
     
  2. p.x = 3
     
  3. p.y = 4


这显得很冗长,而Go语言的一个目标是尽可能的简明扼要。所以提供了一个同时分配和初始化struct的语法:
 

  1. var p1 Point = Point{3,4}  // Value
     
  2. var p2 *Point = &Point{3,4} // Pointer



方法
一旦声明了类型,就可以将该类型显式的作为第一个参数来声明函数:
 

  1. func (self Point) Length() float {
     
  2.   return math.Sqrt(self.x*self.x + self.y*self.y);
     
  3. }


这些函数之后可作为struct的方法而被调用:
 

  1. p := Point{3,4}
     
  2. d := p.Length() //=> 5


方法实际上既可以声明为值也可以声明为指针类型。Go将会适当的处理引用或解引用对象,所以既可以对类型T,也
可以对类型*T声明方式,并合理地使用它们。
让我们为Point扩展一个变换器:
 

阅读全文>>

本文转载自:http://www.mylogged.com/?post=71

刘赤龙
粉丝 14
博文 142
码字总数 0
作品 0
昌平
架构师
私信 提问
零基础学Java的10个方法

版权声明:本文为北京尚学堂原创文章,未经允许不得转载。 零基础学Java只要方法得当,依然有机会学习好Java编程。 但作为初学者可以通过制定一些合理清晰的学习计划。 在帮你屡清楚思路的同...

SXTkaifa
2016/11/18
21
0
01、Python 系列之 什么是 python

版权声明:本文为博主原创文章,未经博主允许不得转载。 PS:转载请注明出处 作者:TigerChain 地址:http://www.jianshu.com/p/f7d2d2083862 本文出自TigerChain简书 Python 系列 教程简介 1、...

TigerChain
2017/12/15
0
0
Ruby 学习路径

曾几何时,在初学完编程之后,好长一段时间停留在初级程序员阶段,不知道怎么再提高。那时候想着如果有人分享个某个语言的学习路径的话就太好了。 现在,我给大家分享一些我经过各种弯路以后...

rocLv
2017/12/25
0
0
程序人生——为什么高级、初级程序员都重要呢?

每个找工作的程序员都必然会遇到这样的招聘贴:寻找“高级程序员”或“初级/入门级程序员”——也许你并没有真正理解这两者之间的区别。与此同时,许多招聘经理可能也不明白其中的区别,他们...

欧阳海阳
2018/07/18
0
0
JavaEE程序员必读图书大推荐

下面是我根据多年的阅读和实践经验,给您推荐的一些图书: 第一部分: Java语言篇 1 《Java编程规范》 星级: 适合对象:初级,中级 介绍:作者James Gosling(Java之父),所以这本书我觉得...

长平狐
2012/11/12
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

一起来学Java8(五)——接口默认方法

Java8新加入一个特性,允许在接口方法中给定一个默认实现。前提是在方法前面加一个default关键字。 public interface InterfaceMethod {default void say() {System.out.println("hello...

猿敲月下码
12分钟前
7
0
weed3-2.3.3.查询之缓存控制

Weed3 一个超轻量级ORM框架(只有0.1Mb哦) 源码:https://github.com/noear/weed3 源码:https://gitee.com/noear/weed3 缓存控制,是查询中的重点 框架提供的是控制服务。而非缓存服务本身...

刘之西东
15分钟前
7
0
Java Web 中对 ServletRequest 的一些非常规操作解决方案

1. 前言 ServletRequest 是我们搞 Java Web 经常接触的 Servlet Api 。有些时候我们要经常对其进行一些操作。这里列举一些经常的难点操作。 2. 提取 body 中的数据 前后端交互我们会在 body...

码农小胖哥
今天
32
0
《Dual Encoding U-Net for Retinal Vessel Segmentation》阅读笔记-MICCAI2019

作者:Bo Wang1,2, Shuang Qiu2, and Huiguang He1,2,3 目的:Retinal Vessel Segmentation is an essential step for the early diagnosis of eye-related diseases, such as diabetes and ......

JungleKing
今天
30
0
一次看懂 Https 证书认证

TLS > 传输层安全性协定 TLS(Transport Layer Security),及其前身安全套接层 SSL(Secure Sockets Layer)是一种安全协议,目的是为网际网路通信,提供安全及数据完整性保障。 如图,TLS...

极客收藏夹
今天
36
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部