代码演示

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,采用的是指针的调用方法,这样可以避免产生一个浅拷贝
  • 上述代码的逻辑是,我们先定义了一个长方形的结构体,接着我们定义了两个方法,分别是计算面积和周长。最终,当我们将这个结构体实例化,赋予相应的长和宽的值。就可以调用这两个方法,分别计算出被赋予了具体长和宽的长方形的面积和周长了

最新文章

  1. objective-c 语法快速过(5)
  2. libevent之丢失header问题
  3. Wcf for wp8 创建wcf服务 连接wp8模拟器并显示来自wcf服务的接口信息 (一)
  4. Javascript屏蔽回车提交表单
  5. Mysql ID重新排列
  6. Redis集群战法整理
  7. javascript写的ajax请求
  8. vue对比其他框架
  9. Spring装配Bean---使用xml配置
  10. Echatrs 中PIE饼图中间位置怎么显示总数值?
  11. caffe boost cuda __float128 undefined
  12. https证书随记
  13. 2019年2月编程语言最新排行:java稳居第一(java优势在哪里)
  14. Java程序员简历模板
  15. 一款好用的取色工具TakeColor
  16. assert用法
  17. slf4j与logback的结合使用
  18. Activiti操作数据库中文乱码
  19. 一个新手后端需要了解的前端核心知识点之position(一)
  20. 【转】Android学习系列(39)--Android主题和样式之系统篇(上)

热门文章

  1. MISC学习记录 (一)
  2. EM算法的收敛性
  3. scrapy 源码解析 (四):启动流程源码分析(四) Scheduler调度器
  4. C语言笔记、文件io的操作
  5. 静态代理,动态代理和CGLIB代理模式
  6. STL源码剖析:关联式容器
  7. 题解 CF786B 【Legacy】
  8. 题解 CF51F 【Caterpillar】
  9. 题解 SP2713 【GSS4 - Can you answer these queries IV】
  10. 超简单的jq图片上传