码迷,mamicode.com
首页 > 编程语言 > 详细

019_go语言中的方法

时间:2018-04-01 18:52:46      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:演示   lock   pac   有一个   逻辑   markdown   pack   长方形   拷贝   

代码演示

package main

import "fmt"

type rect struct {
    width, heigh int
}

func (r *rect) area() int {
    return r.width * r.heigh
}

func (r rect) perim() int {
    return 2*r.width + 2*r.heigh
}

func main() {
    r := rect{width: 10, heigh: 5}

    fmt.Println("area:", r.area())
    fmt.Println("perim:", r.perim())

    rp := &r
    fmt.Println("area:", rp.area())
    fmt.Println("perim:", rp.perim())
}

代码运行结果

area: 50
perim: 30
area: 50
perim: 30

代码解读:

  • go语言支持在结构体类型中定义方法
  • 上述例子的area方法有一个接收器类型是rect,传给了r,接收器类型可以是值类型也可以是指针类型
  • 用fmt.Println来调用为结构体定义的两个方法
  • 将r的指针&r赋值给rp,采用的是指针的调用方法,这样可以避免产生一个浅拷贝
  • 上述代码的逻辑是,我们先定义了一个长方形的结构体,接着我们定义了两个方法,分别是计算面积和周长。最终,当我们将这个结构体实例化,赋予相应的长和宽的值。就可以调用这两个方法,分别计算出被赋予了具体长和宽的长方形的面积和周长了

019_go语言中的方法

标签:演示   lock   pac   有一个   逻辑   markdown   pack   长方形   拷贝   

原文地址:https://www.cnblogs.com/Joestar/p/8687325.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!