Go语言方法的 值接受者 和 指针接受者 的区别

首先说下结论

1. 无论方法的接受者是值接受者还是指针接受者,对象值调用该方法和对象指针调用该方法都是可行的。

2. 当方法接受者为指针接受者时,对象的值调用该方法和指针调用该方法都会操作对象本身。

3. 当方法接受者为值接受者时,对象的值调用该方法和指针调用该方法都会操作对象的副本,对对象本身无影响

1package method 2 3import "fmt" 4 5type student struct { 6 name string 7 age int8 8} 9 10func (student student) getName() string { 11 student.name = "jack" 12 return student.name 13} 14 15// 接受者为指针的方法 16//func (student *student) getName() string { 17// student.name = "jack" 18// return student.name 19//} 20 21func (student student) getAge() int8 { 22 student.age = 22 23 return student.age 24} 25 26// 接受者为指针的方法 27//func (student *student) getAge() int8 { 28// student.age = 22 29// return student.age 30//} 31 32func TestMethod() { 33 s := student{name: "tom", age: 11} 34 35 // 值调用方法 36 //fmt.Println("age: ", s.getAge()) 37 //fmt.Println("name: ", s.getName()) 38 39 // 指针调用方法 40 fmt.Println("age: ", (&s).getAge()) 41 fmt.Println("name: ", (&s).getName()) 42 43 // 查看调用方法后,对象本身的影响 44 fmt.Println(s.age) 45 fmt.Println(s.name) 46 fmt.Println((&s).age) 47 fmt.Println((&s).name) 48}
点赞
收藏

评论区

加载中...

相关推荐

一篇文章带你了解JavaScript Object 对象

一、概念JavaScript原生提供Object对象(注意起首的O是大写),介绍该对象原生的各种方法。JavaScript的所有其他对象都继承自Object对象,即那些对象都是Object的实例。二、Object()Object本身是一个函数,可以当作工具方法使用,将任意值转为对象。这个方法常用于保证某个值一定是对象。如果参数为空(或者为undefi

Java多态实现原理

Java多态概述多态是面向对象编程语言的重要特性,它允许基类的指针或引用指向派生类的对象,而在具体访问时实现方法的动态绑定。Java对于方法调用动态绑定的实现主要依赖于方法表,但通过类引用调用(invokevirtual)和接口引用调用(invokeinterface)的实现则有所不同。类引用调用的大致过程为:Java编译器将Java源代码编译成c

Java线程的6种状态及切换(透彻讲解)

Java中线程的状态分为6种。1\.初始(NEW):新创建了一个线程对象,但还没有调用start()方法。2\.运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的

Java高并发编程四

_做个笔记,java线程常用的方法,耐心看完._编号方法说明1publicvoidstart()使该线程开始执行;Java虚拟机调用该线程的run方法。2publicvoidrun()如果该线程是使用独立的Runnable运行对象构造的,则调用该Runnable对象的run方法;否则,该方

OC对象本质

ObjectiveC中对象分三类实例对象instance通过alloc产生PersonpNSObjectPersoninit;instance对象内存中存储信息其他成员变量isa指针调用copy方法,遵循NSCopying具体看copyWithZone方法怎么实现

Object

nil用来给对象赋值NULL则给任何指针赋值    //NULL和nil不能互换,nil用于类指针赋值NSNull则用于集合操作一般情况下最好使用用nil(空对象值,有意义)\nil 任意方法\,不会导致崩溃NULL是一个通用指针(泛型指针,指向空指针)NSNull,NULL和nil在本质上应该