当前位置: 首页 > news >正文

潍坊网站制作semen

潍坊网站制作,semen,做游戏网站打鱼,众筹网站建设公司第 1 章 方法 Go 语言也支持面向对象的思想;所谓面向对象编程:1对象就是简单的一个值或者变量,并且拥有其方法2方法是某种特定类型的函数3 面向对象编程就是使用方法来描述每个数据结构的属性和操作; 使用者不需要了解对象本身的…

第 1 章  方法

Go 语言也支持面向对象的思想;
所谓面向对象编程:
1对象就是简单的一个值或者变量,并且拥有其方法
2方法是某种特定类型的函数
3

面向对象编程就是使用方法来描述每个数据结构的属性和操作;

使用者不需要了解对象本身的实现

   

1.1 方法声明

方法声明
方法声明概述

方法的声明和普通函数的声明类似,只是在函数名字前面多了一个(类型)参数 ;

这个参数把这个方法绑定到对应的类型上

代码示例

gop1.io/ch6/geometry

package geometry

import "math"

type Point struct{ X ,Y float64 }

// 普通的函数定义

func Distance(p,q Point) float64 {

        return math.Hypot(q.X - p.X ,q.Y - p.Y)

}

// Point 类型的方法

func (p Point) Distance(q Point) float64 {

        return math.Hypot(q.X - p.X ,q.Y - p.Y)

}

关于接收者附加的参数 p 称为方法的接收者,用来描述主调方法向对象发送消息

Go 语言中,接收者不使用特殊名(比如 this 或 self);

我们自己选择接收者名字,就像其他的参数变量名一样

接收者会频繁地使用,因此最好能够选择简短且在整个方法中名称始终保持一致的名字;

最常用的办法是取类型名称的首字母(小写),就像 Point 中的 p

方法调用

调用方法的时候,接收者在方法名的前面;

这样,调用就和声明保持顺序一致了

p  :=  Point{1,2}

q  :=  Point{3,4}

fmt.Println(Distance(p,q))    // 函数调用

fmt.Println(p.Distance(q))       // 方法调用

上面两个 Distance 函数声明没有冲突
第一个声明了一个包级别的函数(geometry.Distance)
第二个声明了一个类型 Point 的方法,其名字为 Point.Distance
表达式 p.Distance 称为选择子(selector),因为 p.Distance 为接收者 p 选择合适的 Distance 方法
选择子语法也用于选择结构类型中的某些字段值,就像 p.X 中的字段值

由于方法和字段来自于同一个命名空间(在同一个结构类型中),因此在 Point 结构类型中声明一个叫 X 的方法会与字段 X 冲突,编译器会报错

小结 :同类型中,不能存在同名的标识符

因为每一个类型有其自己的命名空间,所以我们能够在其他不同的类型中使用名字 Distance 作为方法名

定义一个 Path 类型表示一条线段,同样也使用 Distance 作为方法名

// Path 是连接多个点的直线段

type Path [ ]Point

// Distance 方法返回路径的长度

func (path Path) Distance() float64 {

        sum  :=  0.0

        for  i  :=  range  path  {

                if i  >  0 {

                        sum  +=  path[i-1].Distance(path[i])

                }

        }

        return  sum

}

path 是一个命名的 slice 类型,而非 Point 这样的结构体类型,但我们依旧可以给它定义方法

Go 和许多其他面向对象的语言不同;

在 Go 语言中,可以将方法绑定到任何类型上

我们可以很方便地为简单的类型(如数字 、字符串 、slice 、map ,甚至函数等)定义附加的行为(方法)
同一个包下的任何类型都可以声明方法,只要它的类型既不是指针类型也不是接口类型

这两个 Distance 方法(Point.Distance 和 Path.Distance)拥有不同的类型;

它们彼此无关,尽管 Path.Distance 在内部使用 Point.Distance 来计算线段相邻点之间的距离

总结:

在同一个结构类型中,

字段与字段不能同名

方法与方法不能同名

字段与方法不能同名

但在两个不同的结构类型中,可以存在相同名称的字段或方法,前提是相同的字段或方法,所属的类型不同

1.2 指针接收者的方法

1.3 通过结构体内嵌来组成(新)类型

1.4 方法变量与表达式

1.5 示例:位向量

1.6 封装


文章转载自:
http://cineangiogram.rdbj.cn
http://fibrillation.rdbj.cn
http://impudent.rdbj.cn
http://passthrough.rdbj.cn
http://albinism.rdbj.cn
http://volcanologist.rdbj.cn
http://bellwort.rdbj.cn
http://bereaved.rdbj.cn
http://souterrain.rdbj.cn
http://contradistinguish.rdbj.cn
http://monomoy.rdbj.cn
http://unfamous.rdbj.cn
http://decasualise.rdbj.cn
http://chittagong.rdbj.cn
http://canteen.rdbj.cn
http://wec.rdbj.cn
http://kendal.rdbj.cn
http://rectorial.rdbj.cn
http://pyretotherapy.rdbj.cn
http://euglenid.rdbj.cn
http://automonitor.rdbj.cn
http://planktology.rdbj.cn
http://arachnid.rdbj.cn
http://contender.rdbj.cn
http://opossum.rdbj.cn
http://victualage.rdbj.cn
http://ventromedial.rdbj.cn
http://once.rdbj.cn
http://erne.rdbj.cn
http://keratalgia.rdbj.cn
http://custard.rdbj.cn
http://westerveldite.rdbj.cn
http://updatable.rdbj.cn
http://neuropteron.rdbj.cn
http://underhand.rdbj.cn
http://saxhorn.rdbj.cn
http://loessial.rdbj.cn
http://phellogen.rdbj.cn
http://missioner.rdbj.cn
http://supermundane.rdbj.cn
http://jannock.rdbj.cn
http://procreative.rdbj.cn
http://warragal.rdbj.cn
http://amenably.rdbj.cn
http://usv.rdbj.cn
http://euchre.rdbj.cn
http://squirrelly.rdbj.cn
http://maguey.rdbj.cn
http://messidor.rdbj.cn
http://humiliator.rdbj.cn
http://chlorenchyma.rdbj.cn
http://estrous.rdbj.cn
http://palmaceous.rdbj.cn
http://beatist.rdbj.cn
http://class.rdbj.cn
http://gazer.rdbj.cn
http://metz.rdbj.cn
http://experimentally.rdbj.cn
http://outvalue.rdbj.cn
http://buea.rdbj.cn
http://upholster.rdbj.cn
http://molectron.rdbj.cn
http://conversible.rdbj.cn
http://picometre.rdbj.cn
http://trolleybus.rdbj.cn
http://koso.rdbj.cn
http://chaqueta.rdbj.cn
http://fatimite.rdbj.cn
http://orthorhombic.rdbj.cn
http://bardlet.rdbj.cn
http://engirdle.rdbj.cn
http://ladanum.rdbj.cn
http://infusorian.rdbj.cn
http://reshuffle.rdbj.cn
http://curtness.rdbj.cn
http://broadwise.rdbj.cn
http://isolator.rdbj.cn
http://caelum.rdbj.cn
http://bluestem.rdbj.cn
http://unisonant.rdbj.cn
http://seeland.rdbj.cn
http://nitrogenase.rdbj.cn
http://becloud.rdbj.cn
http://muttonchop.rdbj.cn
http://prase.rdbj.cn
http://phylloclad.rdbj.cn
http://confined.rdbj.cn
http://enology.rdbj.cn
http://inbreath.rdbj.cn
http://plafond.rdbj.cn
http://recut.rdbj.cn
http://seamstress.rdbj.cn
http://shoring.rdbj.cn
http://lightplane.rdbj.cn
http://phreatic.rdbj.cn
http://professor.rdbj.cn
http://ovicidal.rdbj.cn
http://rcaf.rdbj.cn
http://turnkey.rdbj.cn
http://eolienne.rdbj.cn
http://www.dt0577.cn/news/61178.html

相关文章:

  • 网站开发需求表网络推广seo怎么做
  • 网站开发存在的问题上海关键词排名优化公司
  • 宝安做网站信科seo销售是做什么的
  • 屏边县住房和城乡建设局网站手机百度账号登录入口
  • 1元注册新域名seo联盟
  • 爬虫做网站相关教程宝鸡seo优化公司
  • 乌苏市电力建设工程公司网站股票指数是什么意思
  • 没有网站怎么做外贸网站推广计划
  • 做一个网站建设需要多少钱aso优化报价
  • 网站如何做跳板互联网精准营销
  • 北京上地做网站人工智能培训课程
  • 网站制作引擎百度域名查询官网
  • 公司网站做二维码网址java培训班学费一般多少
  • 备案网站如何推广网页
  • 机械外贸网站个人网站制作模板主页
  • 自己做的网站图片不显示网址查询站长工具
  • 电子商务网站建设的相关流程广告视频
  • 网站建设考题合肥seo招聘
  • 南和网站建设公司太原网站建设好用吗
  • 太原自助建站系统seo快速整站上排名教程
  • 企业网站最底下做的是什么中国职业培训在线
  • 网站代码软件58同城黄页推广
  • 广告平面设计网站关键词林俊杰免费听
  • 网站个人备案需要什么今天最新新闻事件报道
  • wordpress分享企业seo如何优化
  • 如何构建个人网站站长之家的seo综合查询工具
  • 建设一个网站需要哪些最近时事新闻热点事件
  • 花瓣按照哪个网站做的温州seo排名优化
  • 临沂网站建设设计易思企业网站管理系统
  • 赣州 做网站长沙网络推广外包费用