指针变量的方法集

  1. package main
  2.  
  3. import "fmt"
  4.  
  5. type Person struct {
  6. name string
  7. sex byte
  8. age int
  9. }
  10.  
  11. func (p Person) SetValueInfoValue() {
  12. fmt.Println("SetValueInfoValue")
  13. }
  14.  
  15. func (p *Person) SetValueInfoPointer() {
  16. fmt.Println("SetValueInfoPointer")
  17. }
  18.  
  19. func main() {
  20. //结构体变量是一个指针变量,它能够调用哪些方法,这些方法就是一个集合,简称方法
  21. p := &Person{} //这里的就是一个指针类型了
  22. p.SetValueInfoValue() //func (p *Person) SetValueInfoPointer(),但其实它也可以使用下面的方式调用
  23. (*p).SetValueInfoPointer() //这里其实在内部,把(*p)转换成p后再调用,等价于上面
  24. //内部做的转换,先把指针p,转换成*p再调用
  25. (*p).SetValueInfoPointer()
  26. p.SetValueInfoValue()
  27. //用实例value和pointer调用方法(含匿名突)不受方法集约束,编译器问题查找全部方法,并自动转换receiver实参
  28. p.SetValueInfoPointer()
  29. }

执行结果

  1. SetValueInfoValue
  2. SetValueInfoPointer
  3. SetValueInfoPointer
  4. SetValueInfoValue
  5. SetValueInfoPointer

普通变量的方法集

  1. package main
  2.  
  3. import "fmt"
  4.  
  5. type Person struct {
  6. name string
  7. sex byte
  8. age int
  9. }
  10.  
  11. func (p Person) SetValueInfoValue() {
  12. fmt.Println("SetValueInfoValue")
  13. }
  14.  
  15. func (p *Person) SetValueInfoPointer() {
  16. fmt.Println("SetValueInfoPointer")
  17. }
  18.  
  19. func main() {
  20. p := Person{}
  21. p.SetValueInfoPointer() //这里方法需要的其实是一个指针类型,但这里依然可以编译通过,在内部,先反p转换为&p再调用,
  22. }

[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. Macbook Pro上安装Windows 7虚机

    折腾了大半天,终于搞定. 首先是安装VirtualBox,之后关键的是需要Win7虚机种子,百度了下去系统之家下的. 如果不是Ghost系统的话,VirtualBox可以直接load安装. 但是那边都 ...

  2. Java的Socket通信----通过 Socket 实现 TCP 编程之多线程demo(2)

    JAVA Socket简介 所谓socket 通常也称作”套接字“,用于描述IP地址和端口,是一个通信链的句柄.应用程序通常通过”套接字”向网络发出请求或者应答网络请求. import java.io ...

  3. 仅用CSS3创建h5预加载跳动圈

    <head> <meta charset="UTF-8"> <title></title> <style type=" ...

  4. react-router4 嵌套路由

    先直接贴代码 import React from 'react'; import ReactDOM from 'react-dom'; import { HashRouter as Router, R ...

  5. Swift 修改UITextField.Placeholder颜色

    StoreNameEditTextField.attributedPlaceholder = NSAttributedString(string:"点此处输入门店名称",attri ...

  6. 流程管理软件(BPM)功能简介

    易协流程管理系统实现将人为控制的业务活动,通过信息化手段实现系统控制,降低人为控制管理的风险以及促进企业的各项决策方针的顺利实施. 系统目标: 实现管理的规范化.制度化.程序化: 帮助企业将内控制度流 ...

  7. 模板导入 {include 模块名}

    模板导入可以和上面讲的模板继承一起使用, 可以使用模板的批量复制和导入 下面举一个例子 我们先写一个需要导入模块的html  tp1 {% extends 'master.html' %} {% bl ...

  8. C#与U3D中字符串尾0

    static void TestChar0() {//注意字符串中0和\0的区别,如 s1="h0ello", s2 = "h\0ello" //s2中的\0是 ...

  9. [iOS]UIScrollView左右拨动,第二页宽度只有一半问题

    用UIScrollView动态加入新View,而这个View是Xib方式创建,如果设置view的frame,这个view的宽度却只有设置的一半,很奇怪.于是我只设置view的frame的x值,不设置整 ...

  10. visjs使用小记-2.option参数注释说明

    对部分参数进行中文说明,后续补充 var options = { nodes:{//节点配置 borderWidth: 1,//节点边框的宽度,单位为px borderWidthSelected: 2 ...