zoukankan      html  css  js  c++  java
  • go语言之进阶篇方法值

    1、方法值

    示例:

    package main
    
    import "fmt"
    
    type Person struct {
    	name string //名字
    	sex  byte   //性别, 字符类型
    	age  int    //年龄
    }
    
    func (p Person) SetInfoValue() {
    	fmt.Printf("SetInfoValue: %p, %v
    ", &p, p)
    }
    
    func (p *Person) SetInfoPointer() {
    	fmt.Printf("SetInfoPointer: %p, %v
    ", p, p)
    }
    
    func main() {
    	p := Person{"mike", 'm', 18}
    	fmt.Printf("main: %p, %v
    ", &p, p)
    
    	p.SetInfoPointer() //传统调用方式
    
    	//保存方式入口地址
    	pFunc := p.SetInfoPointer //这个就是方法值,调用函数时,无需再传递接收者,隐藏了接收者
    	pFunc()                   //等价于 p.SetInfoPointer()
    
    	vFunc := p.SetInfoValue
    	vFunc() //等价于 p.SetInfoValue()
    
    }
    

    执行结果:

    main: 0xc00005a400, {mike 109 18}
    SetInfoPointer: 0xc00005a400, &{mike 109 18}
    SetInfoPointer: 0xc00005a400, &{mike 109 18}
    SetInfoValue: 0xc00005a4a0, {mike 109 18}
    

      

  • 相关阅读:
    java内存管理之内存模型
    HTTP协议
    12 数值的整数次方
    11 二进制中1的个数+二进制补充知识点
    10 矩形覆盖
    9 变态跳台阶
    8 跳台阶
    7斐波那契数列
    6旋转数组的最小数字
    5用两个栈实现队列
  • 原文地址:https://www.cnblogs.com/nulige/p/10250559.html
Copyright © 2011-2022 走看看