go 方法接受者 是指针类型和非指针类型的 区别

非指针类型

package mainimport "fmt"// 定义接口
type Car interface {GetName() stringRun()
}// 定义结构体
type Tesla struct {Name string
}// 实现接口的GetName()方法
func (t Tesla) GetName() string {t.Name = "test"return t.Name
}// 实现接口的Run()方法
func (t Tesla) Run() {fmt.Printf("%s is running\n", t.Name)
}func main() {var c Carvar t Tesla = Tesla{"Tesla Model S"}c = t  // 上面是用指针*Tesla实现了接口的方法,这里要传地址fmt.Println(c.GetName())c.Run()
}
test
Tesla Model S is running

指针类型

package mainimport "fmt"// 定义接口
type Car interface {GetName() stringRun()
}// 定义结构体
type Tesla struct {Name string
}// 实现接口的GetName()方法
func (t *Tesla) GetName() string {t.Name = "test"return t.Name
}// 实现接口的Run()方法
func (t *Tesla) Run() {fmt.Printf("%s is running\n", t.Name)
}func main() {var c Carvar t Tesla = Tesla{"Tesla Model S"}c = &t  // 上面是用指针*Tesla实现了接口的方法,这里要传地址fmt.Println(c.GetName())c.Run()
}
test
test is running

结论

传递指针 可以 修改 传递的结构体的值,在其他方法中也生效。
原来一直写python,不了解指针有啥用。 用到这里明白了一点点。

转载于:https://blog.51cto.com/hequan/2335277

go 方法接受者 是指针类型和非指针类型的 区别相关推荐

  1. Java技能点--基本类型与非基本类型

    点此查看全部文字教程.视频教程.源代码 本文目录 1. 概述 2. 基本类型 3. 非基本类型 4. 内存的不同位置 1. 概述 Java号称一切皆为对象,此话不假,但是尚需知道Java中的对象分两种 ...

  2. [go]method的指针声明及非指针声明

    刚入手golang,大概弄清楚了method在go里的概念. 以下大部分为搬运过程重写代码. method可以为一个type添加(声明)一个方法,例如: type Cat struct { }func ...

  3. c++(/clr)非托管类型和托管类型互转

    以下代码必须有"Common Language Runtime Support(/clr)" 和"MFC"支持 1. 字符窜之间的转换 1 // 托管类型到非托 ...

  4. 指针:const与指针

    const类型的指针可以指向非const类型的对象,但const类型的对象必须由const类型的指针指定: // C++ 语言强制要求指向 const 对象的指针也必须具有 const 特性const ...

  5. 库存物料与非库存物料的区别

    在JDE中可设置物料的储存种类,一般使用2中,管理库存与不管理库存,这二者在配置上有以下区别 行类型 S-库存类型 N-非库存类型 物料文档 F4101物料主文件:二者皆需维护 F4102物料分布文件 ...

  6. 明显调用的表达式前的括号必须具有指针函数类型_基于指针对象的方法

    " 本文来源于<The Go Programming Language>" 6.2. 基于指针对象的方法 当调用一个函数时,会对其每一个参数值进行拷贝,如果一个函数需要 ...

  7. 【Android FFMPEG 开发】FFMPEG 方法中指针类型参数说明 ( 一维指针类型参数 | 二维指针类型参数 )

    文章目录 I . 一维指针类型参数 II . 二维指针类型参数 I . 一维指针类型参数 1 . 音视频流数据包获取 : //读取数据包AVPacket *avPacket = av_packet_a ...

  8. c++ 表达式必须包含指向类的指针类型_C++:18const关键字(附常量指针、指针常量、常量指针常量)...

    一.const变量的一些基本特点 ①const修饰的变量不能被修改 const int a=10; a=20;//错误 ②因为const修饰的变量不能被修改,所以必须被初始化 int a=10; co ...

  9. python布尔类型运算_Python对象类型及其运算方法(详解)

    基本要点: 程序中储存的所有数据都是对象(可变对象:值可以修改 不可变对象:值不可修改) 每个对象都有一个身份.一个类型.一个值 例: >>> a1 = 'abc' >> ...

最新文章

  1. 新雨个人面试经验总结
  2. DL中版本配置问题:TensorFlow、Keras、Python版本完美搭配推荐
  3. 揭秘《死者之书》之环境资源及特效创作
  4. 30行代码AC——例题6-3 矩阵链乘(Maxtrix Chain Multiplication, UVa 442)——解题报告
  5. mysql云数据库 磁盘利用率_云数据库MySQL参数的那些事儿
  6. linux游戏调试,LINUX游戏服务器的安装与调试.doc
  7. PHPstorm内存不足
  8. dotween路径移动_Unity---DOTween插件学习(3)---获取数据、协程、路径动画
  9. VIMrc 配置文件
  10. atitit.thumb生成高质量缩略图 php .net c++ java
  11. 解决 Elastic Search 的 Fast Vector Highlighting (FVH) 策略无法高亮 nested 数据类型
  12. saas和pass的区别
  13. 一步一步教你 https 抓包
  14. ASO新手快速入门教程
  15. JavaScript之切换背景图片(并使)背景栏保持和背景色调相似
  16. TAGE Branch Predictor/分支预测
  17. zsh: no matches found: 错误解决 setopt no_nomatch
  18. 新手选择蓝牙耳机要注意什么?双11发烧友疯狂推荐五款蓝牙耳机
  19. define的函数用法
  20. 金蝶软件怎么过账_超详细!金蝶财务软件实操流程

热门文章

  1. 免费公开课 | 机器学习的第二次入门
  2. 25种代码坏味道总结+优化示例
  3. 发现一个很奇怪的现象,MyBaits 的 insert方法一直返回-2147482646
  4. ZooKeeper 源码和实践揭秘
  5. 一篇让你搞懂 Nginx
  6. 必须要掌握的 InterruptedException 异常处理
  7. Spring Cloud第九篇:链路追踪Sleuth
  8. 你要的用户画像实践来了!
  9. 研究生穿实验服满校追羊跑... 因为这是在追奔跑的毕业论文,哈哈哈!
  10. 超详细配置教程,搭建 Windows 深度学习环境