有时候看别人的go代码,发现他们有的在代码里面用了指针,有的不使用。

假设有个结构体类型叫做Person,发现有些方法会用func methodA (*person Person)作为参数,或者使用 func *(person Person) methodA()作为结构体自己的方法,也就是person这个结构体 (推荐学习:go)

可以直接调用methodA,但是用的是指针。

或者在map结构里面看到var personMap map[string]*Person 的用法

如果是从java转过来golang的话,可能不太好理解。因为java的世界是没有指针的,直接传递过去就可以用了,但是到golang上需要注意很多地方。

那么什么时候该用呢?为什么有些地方需要用呢?

不使用指针的话,某些情况是没法赋值给结构体的

接下来看一段代码,这段代码不使用任何指针,先定义一堆用于测试的对象type Person struct { //person结构体,包含年龄,名称,车

age int

name string

car Car

}

type Car struct { //person名下的车

name string //车的名字

}

var personMap map[string]Person //一个存放person的map

func setName(person Person, name string) { //给参数person设置名字

person.name = name

}

func (person Person) setName(name string) { //设置名字

person.name = name

}

func printName(person Person){ //打印person的名字

fmt.Println(person.name)

}

func (person Person)printName(){ //结构体person自己支持打印名字

fmt.Println(person.name)

}

所以得出结论,当我们需要修改结构体的变量内容的时候,方法传入的结构体变量参数需要使用指针,也就是结构体的地址

需要修改map中的架构体的变量的时候也需要使用结构体地址作为map的value

如果仅仅是读取结构体变量,可以不使用指针,直接传递引用即可

*type 这里的type这个变量存放的东西是地址,这点需要明确,需要使用&type获取到地址。

php 使用 go函数指针,golang 什么时候使用指针相关推荐

  1. golang的new函数_new()和make()函数以及Golang中的示例

    golang的new函数 In Golang, to allocate memory, we have two built-in functions new() and make(). 在Golang ...

  2. Go 学习笔记(13)— 指针定义、指针特点、空指针、指针数组、指向指针的指针、指针作为函数入参

    1. 复合数据类型 Go 语言基本的复合数据类型有指针.数组.切片.字典.通道.结构和接口等.格式如下: * pointerType // 指针类型, [n]elementType // 数组类型, ...

  3. C++ 函数参数传递:传值,传指针,传引用

    PS:首先理解形参   实参概念.形参是在函数定义的括号内定义的专用变量,它们的目的是保存按实参传递给它们的信息,实参被列在函数调用语句的括号内. int func(int x)//x是形参 {ret ...

  4. itoa函数的递归实现(二级指针实现)

    问题提出 <C Programming Language>书中在递归这一节预留了两个使用递归实现的函数,其中itoa函数是用来将一个整数转换为一个字符串.书中已有使用循环实现的版本,但是直 ...

  5. 【C 语言】多级指针 ( 在函数中生成 二级指针 | 通过传入的 三级指针 进行间接赋值 )

    文章目录 前言 一.在函数中生成 二级指针 ( 通过传入的 三级指针 进行间接赋值 ) 二.完整代码示例 前言 如果要 通过 函数形参 间接赋值 修改 nnn 级指针, 需要向函数中传入 n+1n + ...

  6. 【C 语言】二级指针作为输入 ( 自定义二级指针内存 | 二级指针排序 | 抽象业务逻辑函数 )

    文章目录 一.二级指针排序 ( 抽象业务逻辑函数 ) 1.生成 二级指针 函数 2.打印 二维指针 函数 3.二维指针排序 函数 4.释放 二维指针 函数 二.完整代码示例 一.二级指针排序 ( 抽象 ...

  7. 指针系统学习7-返回指针值的函数

    1.返回指针值的函数 一个函数可以带回一个整型值.字符值.实型值等,也可以带回指针型的数据,即地址.其概念与以前类似,只是带回的值的类型是指针类型而已. 这种带回指针值的函数,一般定义形式为      ...

  8. c语言 指针函数 详解,[NOTE-C]C语言指针详解(一)

    C语言指针让一切想法变成可能,强转和指针可以看做一项呼风唤雨的利器,但是C语言中指针应用又需要格外的小心,其更灵活的利用内存,因为不当的应用可能引起各种异常,这篇文章就是让我们一起来认识C指针,更好的 ...

  9. 指向成员函数的指针有什么用_指针函数,函数指针,有点懵圈了?你能分清楚吗...

    指针函数和函数指针到底怎么区分? 1.前言 数组.指针,这两个词结合的顺序不同,其意义也不同. 同样的,函数.指针这两个词结合的顺序不同其意义也不同,即指针函数与函数指针的意义不同. 2.指针函数 指 ...

最新文章

  1. Nilearn教程系列(4)-fMRI解码入门教程(一)
  2. Ubuntu 安装VMware Tools 报Read-only file system问题解决
  3. html5怎么删除样式,css怎么删除一个样式
  4. 网易宣布:招30人![免费加入]网易java人才培养计划!
  5. fl2440hello world模块驱动编写
  6. 论文笔记总结_S2D_从稀疏到稠密
  7. 高德地图报Native method not found: com.autonavi.amap.mapcore.MapCore.nativeNewInstance:
  8. LitePal的使用——Android开源数据库
  9. RTU设备功能及选型
  10. cimage和gdi绘图效率比较_使用MFC CImage类和GDI+ Image加载并绘制PNG图片
  11. LaTeX 绘制思维导图
  12. 【饭谈】领导叫你搞个自动化平台,你要怎么入手?不会上来就开始新建项目写代码吧?
  13. UE4 动态材质设置
  14. halcon印章文字提取
  15. MacOS更新BigSur后git不可用的问题
  16. BootStrap笔记-下拉菜单的使用
  17. CS5266 Type-c转HDMI4K30HZ
  18. bzoj4084【SDOI2015】bigyration
  19. Android 自定义View流程
  20. 前端实现调用手机照相机并加辅助框

热门文章

  1. Spring MVC 入门
  2. Xming + PuTTY 在Windows下远程Linux主机使用图形界面的程序
  3. ORACLE数据库表空间备份方案
  4. 无关程序,一点感言.
  5. 【Leetcode】那些年四数之和下的评论
  6. 【Python】tqdm创建进度条
  7. 周志华《机器学习》课后习题(第三章):线性模型
  8. 撒花!吴恩达《Machine Learning Yearning》中文版新鲜出炉!
  9. java中属于常量_java中的常量和属性
  10. usb转rj45_笔记本接口不够怎么办?先看USB-A接口能转谁