指针变量的方法集

package main

import "fmt"

type Person struct {
    name string
    sex byte
    age int
}

func (p Person) SetValueInfoValue()  {
    fmt.Println("SetValueInfoValue")
}

func (p *Person) SetValueInfoPointer()  {
    fmt.Println("SetValueInfoPointer")
}

func main() {
    //结构体变量是一个指针变量,它能够调用哪些方法,这些方法就是一个集合,简称方法
    p := &Person{} //这里的就是一个指针类型了
    p.SetValueInfoValue() //func (p *Person) SetValueInfoPointer(),但其实它也可以使用下面的方式调用
    (*p).SetValueInfoPointer() //这里其实在内部,把(*p)转换成p后再调用,等价于上面
    //内部做的转换,先把指针p,转换成*p再调用
    (*p).SetValueInfoPointer()
    p.SetValueInfoValue()
    //用实例value和pointer调用方法(含匿名突)不受方法集约束,编译器问题查找全部方法,并自动转换receiver实参
    p.SetValueInfoPointer()
}

执行结果

SetValueInfoValue
SetValueInfoPointer
SetValueInfoPointer
SetValueInfoValue
SetValueInfoPointer

普通变量的方法集

package main

import "fmt"

type Person struct {
    name string
    sex byte
    age int
}

func (p Person) SetValueInfoValue()  {
    fmt.Println("SetValueInfoValue")
}

func (p *Person) SetValueInfoPointer()  {
    fmt.Println("SetValueInfoPointer")
}

func main() {
    p := Person{}
    p.SetValueInfoPointer() //这里方法需要的其实是一个指针类型,但这里依然可以编译通过,在内部,先反p转换为&p再调用,
}

[GO]方法集的更多相关文章

  1. JS方法集

    数组方法集 Angela.array = { //# 数组方法 // index, 返回位置! 不存在则返回 -1: index: function (t, arr) { //# 返回当前值所在数组的 ...

  2. 【终结版】C#常用函数和方法集汇总

    C#里面的常用的函数和方法非常重要,然而做题的时候会经常忘记这些封装好的方法,所以我总结一下 C#常用函数和方法集. [1]C#操作字符串的常用使用方法 在 C# 中,您可以使用字符数组来表示字符串, ...

  3. Go的方法集

    方法集定义了接口的接受规则. package main import "fmt" type notifier interface { notify() } type user st ...

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

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

  5. go语言之进阶篇指针类型和普通类型的方法集

    方法集 类型的方法集是指可以被该类型的值调用的所有方法的集合. 用实例实例 value 和 pointer 调用方法(含匿名字段)不受方法集约束,编译器编总是查找全部方法,并自动转换 receiver ...

  6. c#.net常用函数和方法集

    1.DateTime 数字型 System.DateTime currentTime=new System.DateTime(); 1.1 取当前年月日时分秒 currentTime=System.D ...

  7. legend---三、方法集思路

    legend---三.方法集思路 一.总结 一句话总结:其实也就是工具包思路,会极大的简化编程,清晰逻辑 1.多if转换成简洁单if怎么实现? 下面这段代码是错的,if的这种写法只适合直接return ...

  8. go语言规范之方法集

    Go语言规范里定义的方法集的规则 Values Methods Receivers ----------------------------------------------- T (t T) *T ...

  9. Go语言接口内部布局和方法集详解

    1. 接口值内部布局   如果用户定义的类型实现了某个接口类型声明的一组方法,那么这个用户定义的类型的值就可以赋给这个接口类型的值.这个赋值会把用户定义的类型的值存入接口类型的值.赋值完成后得到的值称 ...

随机推荐

  1. 第三章 k8s cluster环境创建

    1  用如下方法安装指定版本的docker,但是我的环境会报错 # 安装rpm apt install rpm # 下载 RPM 包, docker 版本 wget https://download. ...

  2. 【转】WebAPI使用多个xml文件生成帮助文档

    来自:http://www.it165.net/pro/html/201505/42504.html 一.前言 上篇有提到在WebAPI项目内,通过在Nuget里安装(Microsoft.AspNet ...

  3. jQuery笔记——插件

    验证插件 验证插件(validate.js),是一款验证常规表单数据合法性的插件.使用它,极大的解 放了在表单上繁杂的验证过程,并且错误提示显示的完善也增加了用户体验 插件都可以在JQueryUI 的 ...

  4. enq:TM-contention

    enq:TM-contention 2011-08-04 15:55:17 分类: Linux 7.1 enq:TM-contention         执行dml期间,为防止对与dml相关的对象进 ...

  5. React组件间信息传递方式

    组件之间传递信息方式,总体可分为以下5种: 1.(父组件)向(子组件)传递信息 2.(父组件)向更深层的(子组件) 进行传递信息  >>利用(context) 3.(子组件)向(父组件)传 ...

  6. svn关键词BASE, HEAD, COMMITTED, PREV的深入理解

    svn关键词BASE, HEAD, COMMITTED, PREV可以很方便用于日常操作中,但是很多人对他们的工作原理和方式不是太了解. 在这里我将使用用例,诠释他们的作用和意图. 先给出svn手册中 ...

  7. 腾讯安全反病毒实验室解读“Wannacry”勒索软件

    背景 针对昨日英国医院被攻击,随后肆虐中国高校的 WannaCry 勒索事件,腾讯安全反病毒实验室第一时间给出了深度权威的分析.此次勒索事件与以往相比最大的亮点在于,勒索病毒结合了蠕虫的方式进行传播, ...

  8. 「小程序JAVA实战」小程序视图之条件判断(15)

    转自:https://idig8.com/2018/08/09/xiaochengxu-chuji-15/ 小程序里面也是有条件判断的,我相信大家在开发java if和jstl c:if c:when ...

  9. 调试正常,签名打包提示 "x应用未安装。"

    今天在工作的时候遇到一个奇葩的问题,开发一个新项目,然后在AS中调试运行都是一切正常.打包签名后,缺无法安装,提示"x应用未安装."如图所示. 网上找了好多方法,比如,签名的时候要 ...

  10. loadView 和 viewDidLoad、viewDidunload 的区别

    loadView 和 viewDidLoad 是 iPhone 开发中肯定要用到的两个方法. 他们都可以用来在视图载入的时候初始化一些内容. 但是他们有什么区别呢? viewDidLoad 方法只有当 ...