1、由于结构体是值类型,在方法传递时希望传递结构体地址,可以使用结构体指针完成,结合new(T)函数创建结构体指针

peo := new(People)
//因为结构体本质是值类型,所以创建结构体指针时已经开辟了内存空间
fmt.Println(peo == nil) //输出:false
//由于结构体中属性并不是指针类型,所以可以直接调用
peo.Name = "jeff"
fmt.Println(peo)//输出:&{jeff 0}
peo1:=peo
peo1.Name="高级语言"
fmt.Println(peo1,peo)//输出:&{高级语言 0} &{高级语言 0}

2、如果不想使用new(T)函数,可以直接声明结构体指针并赋值

//声明结构体指针
var peo *People
//给结构体指针赋值
peo = &People{"jeff", 18}
/*
上面代码使用短变量方式如下
peo:= &People{"jeff", 18}*/
fmt.Println(peo)

3、结构体指针比较的是地址,*结构体指针取出地址中对应的值

p1 := People{"jeff", 18}
p2 := People{"jeff", 18}
fmt.Printf("%p %p\n", &p1, &p2) //输出地址不同
fmt.Println(p1 == p2)           //输出:truep3 := new(People)
p3 = &People{"jeff", 17}
//结构体变量不能和指针比较,使用*指针取出地址中值
fmt.Println(p1 == *p3) //输出:truep4 := &People{"jeff", 17}
//指针比较的是地址
fmt.Println(p3 == p4) //输出:false

golang结构体指针相关推荐

  1. Go语言自学系列 | golang结构体指针

    视频来源:B站<golang入门到项目实战 [2021最新Go语言教程,没有废话,纯干货!持续更新中...]> 一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持! ...

  2. golang 结构体简介

    Go 通过类型别名(alias types)和结构体的形式支持用户自定义类型,或者叫定制类型.试图表示一个现实世界中的实体. 结构体由一系列命名的元素组成,这些元素又被称为字段,每个字段都有一个名称和 ...

  3. go结构体初始化_浅谈golang结构体偷懒初始化

    运行一段程序,警告: service/mysqlconfig.go:63::error: golang.guazi-corp.com/tools/ksql-runner/model.CreatingM ...

  4. Go语言自学系列 | golang结构体作为函数参数

    视频来源:B站<golang入门到项目实战 [2021最新Go语言教程,没有废话,纯干货!持续更新中...]> 一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持! ...

  5. golang 结构体struct、数组、结构体数组 定义与赋值 、json string转struct

    文章目录 1.结构体struct 1.1 声明结构体 1.2 初始化结构体 以及 传参 2. 结构体数组.append 3. 接口返回 含数组的结构体 常用写法 json string转struct ...

  6. Go 学习笔记(14)— 结构体定义、实例化、初始化、匿名结构体、结构体访问、结构体作为形参、结构体指针

    Go 语言中没有 "类" 的概念,也不支持 "类" 的继承等面向对象的概念.Go 语言不仅认为结构体能拥有方法,且每种自定义类型也可以拥有自己的方法. 1. 结 ...

  7. c++队列指针 结构体指针

    RevData中如果放的是对象数据,不是char* int,可以用如下方式: RevData *recvD =new RevData; recvD.size = i; strcpy(recvD.dat ...

  8. c++ map嵌套队列(队列嵌套结构体指针)ok

    map中嵌套队列,队列中是结构体,有一个问题,结构体中的值不更新 #include <iostream> #include <queue> #include<map> ...

  9. [知识复习] 结构体以及结构体指针

    结构体 struct node { int data; char sex; }s1,s2;                         //-------------变量s1,s2 typedef ...

最新文章

  1. css图片悬停边框,CSS悬停边框使内联元素稍微调整
  2. jquery遍历函数siblings()
  3. 关于PChar(@string)的疑惑
  4. CORS 跨域-同源策略
  5. start()和run()的区别
  6. shell脚本spawn_如何使用child_process.spawn将Python / Ruby / PHP Shell脚本与Node.js集成
  7. 对未登陆的用户进行处理的页面
  8. 如何安装VMware Workstation虚拟机、及注意事项、安装所需的许可证码
  9. 感性电路电流计算_电流、电压、电阻的关系和单位换算表
  10. 西交学电气还是计算机,上南大还是上西交学电气
  11. linux on galaxy 教程,三星 'Linux on DeX' 进入 Beta 版,该文章告诉您如何参与其中
  12. SWing组件说明及使用
  13. java 熄灯问题_C++基础算法学习——熄灯问题
  14. AngularJS 模块
  15. 地震勘探原理(五)之地震勘探的野外工作
  16. python中求和符号怎么打_参数siz向量的python符号求和与微分
  17. 更换新电池对iPhone手机性能的影响实测
  18. LsDYNA 任务批量提交
  19. A005:查找文件之find, locate, whereis, which, type
  20. Asp.Net Ajax (2)---ScriptManager

热门文章

  1. 深度学习 - 43.SeNET、Bilinear Interaction 实现特征交叉 By Keras
  2. 7-20 奥运排行榜
  3. 标准c语言程序的语句都以什么结尾,c程序的执行是从什么开始到什么结束?
  4. 计算机网络 第3章 作业1
  5. GALIL运动控制卡维修控制器维修DMC-1840
  6. nargin与varnargin
  7. VPP使用详解——基于VPP的VLAN配置
  8. RabbitMQ(四):mandatory、immediate、备份交换器
  9. 红旗Linux的特点和应用范围,三大特性!红旗Linux Desktop 7体验
  10. 365句百姓真理——男人好色,女人好情