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(n string, s byte, a int) {
    	p.name = n
    	p.sex = s
    	p.age = a
    	fmt.Println("p = ", p)
    	fmt.Printf("SetInfoValue &p = %p
    ", &p)
    }
    
    //接收者为指针变量,引用传递
    func (p *Person) SetInfoPointer(n string, s byte, a int) {
    	p.name = n
    	p.sex = s
    	p.age = a
    
    	fmt.Printf("SetInfoPointer p = %p
    ", p)
    }
    
    func main() {
    	s1 := Person{"go", 'm', 22}
    	fmt.Printf("&s1 = %p
    ", &s1) //打印地址
    
    	//值语义
    	//	s1.SetInfoValue("mike", 'm', 18)
    	//	fmt.Println("s1 = ", s1) //打印内容
    
    	//引用语义
    	(&s1).SetInfoPointer("mike", 'm', 18)
    	fmt.Println("s1 = ", s1) //打印内容
    }
    

    #执行结果:

    &s1 = 0xc00005a400
    
    SetInfoPointer p = 0xc00005a400
    
    s1 =  {mike 109 18}
    

      

  • 相关阅读:
    MVC框架及应用
    《架构之美》三
    《架构之美》二
    深度学习之多层感知器
    架构之美
    质量属性之淘宝案例分析
    配置cocos相关问题
    3-5
    web文本框之内容提示
    【LeetCode】024. Swap Nodes in Pairs
  • 原文地址:https://www.cnblogs.com/nulige/p/10249956.html
Copyright © 2011-2022 走看看