golang结构体指针
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结构体指针相关推荐
- Go语言自学系列 | golang结构体指针
视频来源:B站<golang入门到项目实战 [2021最新Go语言教程,没有废话,纯干货!持续更新中...]> 一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持! ...
- golang 结构体简介
Go 通过类型别名(alias types)和结构体的形式支持用户自定义类型,或者叫定制类型.试图表示一个现实世界中的实体. 结构体由一系列命名的元素组成,这些元素又被称为字段,每个字段都有一个名称和 ...
- go结构体初始化_浅谈golang结构体偷懒初始化
运行一段程序,警告: service/mysqlconfig.go:63::error: golang.guazi-corp.com/tools/ksql-runner/model.CreatingM ...
- Go语言自学系列 | golang结构体作为函数参数
视频来源:B站<golang入门到项目实战 [2021最新Go语言教程,没有废话,纯干货!持续更新中...]> 一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持! ...
- golang 结构体struct、数组、结构体数组 定义与赋值 、json string转struct
文章目录 1.结构体struct 1.1 声明结构体 1.2 初始化结构体 以及 传参 2. 结构体数组.append 3. 接口返回 含数组的结构体 常用写法 json string转struct ...
- Go 学习笔记(14)— 结构体定义、实例化、初始化、匿名结构体、结构体访问、结构体作为形参、结构体指针
Go 语言中没有 "类" 的概念,也不支持 "类" 的继承等面向对象的概念.Go 语言不仅认为结构体能拥有方法,且每种自定义类型也可以拥有自己的方法. 1. 结 ...
- c++队列指针 结构体指针
RevData中如果放的是对象数据,不是char* int,可以用如下方式: RevData *recvD =new RevData; recvD.size = i; strcpy(recvD.dat ...
- c++ map嵌套队列(队列嵌套结构体指针)ok
map中嵌套队列,队列中是结构体,有一个问题,结构体中的值不更新 #include <iostream> #include <queue> #include<map> ...
- [知识复习] 结构体以及结构体指针
结构体 struct node { int data; char sex; }s1,s2; //-------------变量s1,s2 typedef ...
最新文章
- css图片悬停边框,CSS悬停边框使内联元素稍微调整
- jquery遍历函数siblings()
- 关于PChar(@string)的疑惑
- CORS 跨域-同源策略
- start()和run()的区别
- shell脚本spawn_如何使用child_process.spawn将Python / Ruby / PHP Shell脚本与Node.js集成
- 对未登陆的用户进行处理的页面
- 如何安装VMware Workstation虚拟机、及注意事项、安装所需的许可证码
- 感性电路电流计算_电流、电压、电阻的关系和单位换算表
- 西交学电气还是计算机,上南大还是上西交学电气
- linux on galaxy 教程,三星 'Linux on DeX' 进入 Beta 版,该文章告诉您如何参与其中
- SWing组件说明及使用
- java 熄灯问题_C++基础算法学习——熄灯问题
- AngularJS 模块
- 地震勘探原理(五)之地震勘探的野外工作
- python中求和符号怎么打_参数siz向量的python符号求和与微分
- 更换新电池对iPhone手机性能的影响实测
- LsDYNA 任务批量提交
- A005:查找文件之find, locate, whereis, which, type
- Asp.Net Ajax (2)---ScriptManager
热门文章
- 深度学习 - 43.SeNET、Bilinear Interaction 实现特征交叉 By Keras
- 7-20 奥运排行榜
- 标准c语言程序的语句都以什么结尾,c程序的执行是从什么开始到什么结束?
- 计算机网络 第3章 作业1
- GALIL运动控制卡维修控制器维修DMC-1840
- nargin与varnargin
- VPP使用详解——基于VPP的VLAN配置
- RabbitMQ(四):mandatory、immediate、备份交换器
- 红旗Linux的特点和应用范围,三大特性!红旗Linux Desktop 7体验
- 365句百姓真理——男人好色,女人好情