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

北京网站seo策划重庆做石材的网站

北京网站seo策划,重庆做石材的网站,房地产设计管理的思路,如何做网站模特Go语言程序设计-第6章–方法 对象就是简单的一个值或者变量#xff0c;并且拥有其方法#xff0c;而方法是某种特定类型的函数。 6.1 方法的声明 方法的声明和普通函数的声明类似#xff0c;只是在函数名字前面多了一个参数。这个参数把这个方法绑定到这个参数对应的类型…Go语言程序设计-第6章–方法 对象就是简单的一个值或者变量并且拥有其方法而方法是某种特定类型的函数。 6.1 方法的声明 方法的声明和普通函数的声明类似只是在函数名字前面多了一个参数。这个参数把这个方法绑定到这个参数对应的类型上。 package geometryimport mathtype Point struct { X, Y float64 }// 普通函数 func Distince(p, q Point) float64 {return math.Hypot(q.X - p.X, q.Y - p.Y) }// Point 类型的方法 func (p Point)Distince(q Point) float64 {return math.Hypot(q.X - p.X, q.Y - p.Y) }附加的参数 p 称为方法的接收者。接收者不使用特殊名(比如 this 或者 self)。 表达式 p.Distance 称为选择子selector, 因为它为接受者 p 选择合适的 Distince 方法。 6.2 指针接收者的方法 由于主调函数会复制每个实参变量如果函数需要更新一个变量或者如果一个实参太大而我们希望避免复制整个实参。我们必须使用指针来传递变量的地址。 func (p *Point) ScaleBy(factor float64) {p.X * factor;p.Y * factor; }命令类型Point和指向他们的指针* Point是唯一可以出现在接收者声明处的类型。 在真实的程序中如果 Point 的任何一个方法使用指针接收者那么所有的 Point 方法都应该使用指针接收者。 如果方法要求一个 *Point 接收者我们可以使用简写 p.ScaleBy(2)编译器会对变量进行 p 的隐私转换。只有变量才允许这么做包括结构体字段像 p.X 和数组或者 slice 元素比如 perim[0]。 Point(1,2).ScaleBy(2) // 编译错误不能获得 Poing 类型字面量的地址 如果实参接收者是 * Point 类型以 Point.Distance 方式调用Point类型的方法是合法的。编译器自动插入一个隐式的 * 操作符。 p : Point{1, 2} pptr : ppptr.Distance(q) (*pptr).Distance(q)nil 是一个合法的接收者 // IntList 是整形链表 // * IntList 的类型 nil 代表空列表 type IntList struct {Value intTail *IntList }// Sum 返回表元素的总和 func (list *IntList) Sum() int {if list nil {return 0}return list.Value list.Tail.Sum() }6.3 通过结构体内嵌组成类型 import image/colortype Point struct{X, Y float 64}type ColoredPoint struct {PointColor color.RGBA }var cp ColoredPoint cp.X 1能够通过类型为 ColoredPoint 的接收者调用内嵌类型 Point 的方法。 red : color.RGBA{255, 0, 0, 255} blue : color.RGBA{0, 0, 255, 255} var p ColoredPoint{Point{1, 1}, red} var q ColoredPoint{Point{5, 4}, blue} p.ScaleBy(2) p.Distnace(q.Point)Point 的方法都被纳入到 ColorPoint 类型中。 在 go 语言Point 类型不是 ColoredPoint 类型的基类。 ColoredPoint 包含一个Point并且它有两个另外的方法 Distance 和 ScaleBy 来自 Point。如果考虑具体实现实际上内嵌的字段会告诉编译器生成额外的包装方法来调用 Point 声明的方法这相当于以下代码。 func (p ColoredPoint) Distance(q Point) float64 {return p.Point.Distance(q) }func (p* ColoredPoint) ScaleBy(factor float64) {p.Point.ScaleBy(factor) }匿名字段类型可以是指向命名类型的指针这个时候字段和方法间接地来自所指向的对象。 结构体类型可以拥有多个匿名字段。声明 ColoredPoint: type ColoredPoint struct {Pointcolor.RGBA }那么这个类的值可以拥有 Point 所有的方法和 RGBA 所有的方法以及任何其他直接在 ColoredPoint 类型中声明的方法。当编译器处理选择子比如 p.ScaleBy的时候首先先查找直接声明的方法 ScaleBy, 之后在从来自 ColoredPoint 的内嵌字段的方法进行查找这里的方法经过一次提升最后从 Point 和 RGBA 中内嵌的方法中进行查找这里的方法经过2次提升。 如果同一个级别有两个同名的函数提升则编译器会报错。如Point 和 color.RGBA 都有 Scaleby 函数。 6.4 方法变量与表达式 p.Dsitance 可以赋予一个方法变量他是一个函数把方法Point.Distance绑定到一个接收者 p 上。函数只需要提供实参而不需要提供接收者就能够调用。 p : Point{1, 2} q : Point{4, 6} distanceFromP : p.Distance // 方法变量 fmt.Println(distanceFromP(q))与方法变量相关的是方法表达式。在方法表达式写成 T.f 或者(*T).f其中 T 是类型是一种函数变量把原来方法的接收者替换成函数的第一个形参因此它可以像平常的安徽省南一样调用。 package mainimport (fmtmath )type Point struct{ X, Y float64 }func (p Point) Distance(q Point) float64 {return math.Hypot(q.X-p.X, q.Y-p.Y) }func (p *Point) ScaleBy(factor float64) {p.X * factorp.Y * factor }func main() {p : Point{1, 2}q : Point{4, 6}distance : Point.Distance // 方法表达式fmt.Println(distance(p, q))scale : (*Point).ScaleByscale(p, 2)fmt.Println(p) //{2, 4}fmt.Printf(%T\n, scale) // func(*Point, float64) }6.5 示例位向量 6.6 封装 type IntSet struct {words []uint64 }可以定义为 type IntSet []uint64使用时把 s.words 换成 *s。 尽管这个版本的 IntSet 和之前的基本相同但是它允许其他包内的方法读取和改变这个 slice。换句话说表达式 *s 可以在其他包内使用s.words 只能在定义 IntSet 的包内使用。 另一个结论是Go语言封装的单元是包而不是类型。无论是函数内的代码还是方法内的代码结构体类型内的字段对于同一个包中的所有代码都是可见的。 封装提供了三个优点。 第一因为使用方不能直接修改对象的变量所以不需要更多的语句来检查变量的值。 第二隐藏实现细节可以防止使用方依赖的属性发生改变使得设计者可以更加灵活地改变 API 的实现而不破坏兼容性。 第三防止使用者肆意地改变对象内部的变量。
http://www.zqtcl.cn/news/988862/

相关文章:

  • 比较有名的diy制作网站做照片视频的网站
  • 河北石家庄建设网站wordpress nginx apache
  • 上海免费网站建设品牌wordpress主题安装失败下载失败
  • 买公司的网站商城系统开发
  • 网页设计国外设计欣赏网站深夜视频在线免费
  • 做网站怎么租用服务器杭州网站建设hzyze
  • .asp 网站北京最新防疫信息
  • 网站上传用什么软件做视频教程114查询
  • 网站小图标素材网站开发需要提供哪些东西
  • 阿里巴巴国际站买家入口百度建网站多少钱
  • 为网站网站做代理怎么判wordpress 调用当前分类名称
  • 多用户网站管理系统定制网站建设与运营案例
  • 毕业设计做的网站抄袭网站开发执行文档
  • 自己做网站都要什么软件网址你懂我意思正能量不用下载
  • 网站内容的创新wordpress美食主题
  • 程序员做游戏还是做网站好雅安移动网站建设
  • wordpress伪静态大学seo诊断网站免费诊断平台
  • 企业网站模板下载软件商务网站规划与建设心得
  • 做网站的像素是多少钱郑州公司网页
  • 北京游戏网站建设特殊符号网站
  • c 网站开发技术代注册公司要多少钱
  • 设计师参考效果图网站如何写网站建设实验结果分析
  • 网站备案 营业执照做企业网站注意些啥
  • 网站建设公司济南网络教学平台昆明理工大学
  • 原网站开发新功能世赛网站开发
  • 做一款小程序需要多少钱凡科的网站做seo比较难
  • 北京网页设计与网站建设最专业的手机网站建设
  • 做一个网站广州网站备案拍照
  • 做平面图片的网站wordpress批量添加连接
  • 做ppt哪些网站的图片质量高做电商网站需要多少时间