方法集

类型的方法集是指可以被该类型的值调用的所有方法的集合。

用实例实例 value 和 pointer 调用方法(含匿名字段)不受方法集约束,编译器编总是查找全部方法,并自动转换 receiver 实参。

1、指针类型和普通类型的方法集

示例:

package main

import "fmt"

type Person struct {
name string //名字
sex byte //性别, 字符类型
age int //年龄
}

//非指针
func (p Person) SetInfoValue() {
fmt.Println("SetInfoValue")
}

//指针
func (p *Person) SetInfoPointer() {
fmt.Println("SetInfoPointer")
} func main() {
//结构体变量是一个指针变量,它能够调用哪些方法,这些方法就是一个集合,简称方法集
p := &Person{"mike", 'm', 18}
p.SetInfoPointer() //func (p *Person) SetInfoPointer()
//(*p).SetInfoPointer() //把(*p)转换层p后再调用,等价于上面 //内部做的转换, 先把指针p, 转成*p后再调用
//(*p).SetInfoValue()
//p.SetInfoValue() }

执行结果:

SetInfoPointer

  

go语言之进阶篇指针类型和普通类型的方法集的更多相关文章

  1. go语言之进阶篇通过switch实现类型断言

    1.通过switch实现类型断言 示例: package main import "fmt" type Student struct { name string id int } ...

  2. go语言之进阶篇通过if实现类型断言

    1.通过if实现类型断言 示例: package main import "fmt" type Student struct { name string id int } func ...

  3. go语言之进阶篇接口转换

    1.go语音之进阶篇 示例: package main import "fmt" type Humaner interface { //子集 sayhi() } type Pers ...

  4. go语言之进阶篇方法面向过程和对象函数的区别

    1.方法 (method) 在面向对象编程中,一个对象其实也就是一个简单的值或者一个变量,在这个对象中会包含一些函数,这种带有接收者的函数,我们称为方法(method). 本质上,一个方法则是一个和特 ...

  5. go语言之进阶篇接口的定义和实现以及接口的继承

    1.接口的定义和实现以及接口的继承 示例: package main import "fmt" //定义接口类型 type Humaner interface { //方法,只有声 ...

  6. go语言之进阶篇方法的重写

    1.方法的重写 示例: //Person类型,实现了一个方法 func (tmp *Person) PrintInfo() { fmt.Printf("name=%s, sex=%c, ag ...

  7. go语言之进阶篇方法的继承

    1.方法的继承 示例: package main import "fmt" type Person struct { name string //名字 sex byte //性别, ...

  8. go语言之进阶篇普通变量的方法集

    1.普通变量的方法集 示例: package main import "fmt" type Person struct { name string //名字 sex byte // ...

  9. go语言之进阶篇结构体指针类型匿名字段

    1.结构体指针类型匿名字段 示例: package main import "fmt" type Person struct { name string //名字 sex byte ...

随机推荐

  1. caffe 如何训练自己的数据图片

    申明:此教程加工于caffe 如何训练自己的数据图片 一.准备数据 有条件的同学,可以去imagenet的官网http://www.image-net.org/download-images,下载im ...

  2. thinkphp中I()方法的详解

    I('post.email','','email'); int boolean float validate_regexp validate_url validate_email validate_i ...

  3. COCO 数据集使用说明书

    下面的代码改写自 COCO 官方 API,改写后的代码 cocoz.py 被我放置在 Xinering/cocoapi.我的主要改进有: 增加对 Windows 系统的支持: 替换 defaultdi ...

  4. 链路跟踪技术traceId的总结和实践

    目录 写作背景 什么是链路跟踪 目前常见的链路跟踪技术及其优缺点 链路跟踪技术的实现原理 代码示例 背景 由于最近系统上线后,访问量达,出现线上问题后往往无从下手排查,即使打印了很多日志,依然无法快速 ...

  5. spring 装配bean的三种方式

    这段时间在学习Spring,依赖注入DI和面向切面编程AOP是Spring框架最核心的部分.这次主要是总结依赖注入的bean的装配方式. 什么是依赖注入呢?也可以称为控制反转,简单的来说,一般完成稍微 ...

  6. 【转】JQuery Validate使用总结1

    一.导入js库 <script src="../js/jquery.js" type="text/javascript"></script&g ...

  7. 如何定义最佳 Cache-Control 策略

    定义最佳 Cache-Control 策略 按照以上决策树为您的应用使用的特定资源或一组资源确定最佳缓存策略.在理想的情况下,您的目标应该是在客户端上缓存尽可能多的响应,缓存尽可能长的时间,并且为每个 ...

  8. IE访问历史记录恢复工具pasco

    IE访问历史记录恢复工具pasco IE浏览器会自动记录用户访问网站的操作,并将这些信息保存在IE缓存中的index.dat文件中.通过分析这些历史记录,可以还原用户行为.为了便于数字取证,Kali ...

  9. leetcode x 的平方根 python

     x 的平方根     实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: 输入: ...

  10. Mysql 千万级快速查询|分页方案

    1.简单的 直接查主键id SELECT id FROM tblist WHERE LIMIT 500000,10 2对于有where 条件,又想走索引用limit的,必须创建一个索引,将where  ...