go的结构体作为返回值

结构体有两种方式作为返回值

  • 结构体
  • 结构体指针

代码

package mainimport ("fmt"
)type SS struct {Name stringAge  int
}func getInfo() (*SS) {var ac = SS{}ac.Age = 1return &ac
}func getInfo1() (aa *SS) {aa.Age = 1return
}func getInfo2() (SS) {var ac = SS{}ac.Age = 1return ac
}func main() {//var dd *SS//var dd = &SS{}var dc = &SS{}dc = getInfo()fmt.Println(dc.Age)var df = SS{}df = getInfo2()fmt.Println(df.Age)var dd = &SS{}dd = getInfo1()fmt.Println(dd.Age)
}

结果:

1
1
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x47ae8f]goroutine 1 [running]:
main.getInfo1(...)/home/zhaoky/Desktop/kaiyue/aa/f.go:19
main.main()/home/zhaoky/Desktop/kaiyue/aa/f.go:41 +0xaf

分析
1、getinfo() 结构体指针 需要在返回的结构体在函数外有实体
2、getinfo1() 结构体指针 即使在函数外有实体也会报错崩溃,是因为此时给返回的结构体指针声明了一个结构体指针,但这个结构体指针没有实体,在赋值时会报错
3、getinfo2() 结构体作为返回值 外层可以有实体也可以没有

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/216989.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络安全公司梳理,看F5如何实现安全基因扩增

应用无处不在的当下,从传统应用到现代应用再到边缘、多云、多中心的安全防护,安全已成为企业数字化转型中的首要挑战。根据IDC2023年《全球网络安全支出指南》,2022年度中国网络安全支出规模137.6亿美元,增速位列全球第一。有专家…

SMOTE 过采样,解决正负样本不均衡问题

一、SMOTE过采样 1.1 问题 在实际业务中,样本不均衡(即正负样本比例严重失衡)是一种常见的问题。这种情况下,传统的机器学习算法可能会倾向于偏向占主导地位的类别,从而导致模型性能下降。 1.2 SMOTE方法 为了解决…

Scss和less预处理器的使用对比

变量(Variables) scss变量标识符是:$ $primary-color: red; div {background: $primary-color; }less变量标识符: primary-color: red; div {background: primary-color; }变量名称规则:scss下划线和横线相互兼容, less中定义的名称和使用…

磁力计LIS2MDL开发(1)----轮询获取磁力计数据

磁力计LIS2MDL开发.1--轮询获取磁力计数据 概述视频教学样品申请源码下载通信模式速率生成STM32CUBEMX串口配置IIC配置CS设置串口重定向参考程序初始换管脚获取ID复位操作BDU设置设置速率启用偏移消除开启温度补偿设置为连续模式轮询读取数据主程序演示 概述 本文将介绍如何使…

[网络安全]批处理(脚本)编写

Windows DOS命令Linux 一.作用: 自上而下成批次处理每一条命令,直到执行到最后一条 二.如何创建批处理: 扩展名:.bat创建办法:新建一个记事本,把扩展名改为 .bat 三.编辑方法: 右击 -编辑 1).一行一个命令 四.批处理命令: pause 暂停 (及时后面有命令,也不执行)echo …

Knowledge Graph知识图谱—9. Data Quality and Linking

9. Data Quality and Linking 9.1 How well are the linked open data in practice? Linked Open Vocabularies(LOV) project – analyze usage of vocabularies 9.2 Quality Linked Data Conformance vs. Quality Conformance: – i.e., following standards and best prac…

【git push ERROR: commit id: missing Change-Id in message footer】

使用 gerrit 后,提交代码会出现如下截图问题: 临时解决: step1: 把上面红色的那条gitidir复制下来执行下: step2:执行下面的命令会添加change_id git commit --amendstep3: 然后推送代码到服务器上 git push origin HEAD:refs/fo…

事件驱动架构 vs. RESTful架构:通信模式对比与选择

1. 通信风格 事件驱动架构(EDA) 是一种异步通信风格,组件之间通过产生和消费事件进行通信。 事件是表示系统中重大变化或事件的消息,并分发给感兴趣的组件。这种通信模型允许系统的不同部分之间进行解耦和动态交互。 组件充当事件…

新手上路:盘点「性能测试」必须掌握的技术点

前段时间,有一些小伙伴提出希望我们推送点性能测试的技术干货。所以,小编今天通过上网查资料,结合项目实操过程中的一些问题,总结了一些关于性能测试的内容,希望是大家想要了解的内容哈。 1、性能测试的目的 首先&am…

Java中JDK类库常用的6种设计模式

Java中JDK类库常用的6种设计模式:1、抽象工厂。2、建造者模式。3、工厂模式。4、原型模式。5、单例模式。6、适配器模式。 1、抽象工厂 javax.xml.parsers.DocumentBuilderFactory抽象类。 public static DocumentBuilderFactory newInstance()方法。 类功能&…

.Net中的集合

所有的集合都是继承自IEnumerable。集合总体可以分为以下几类:关联/非关联型集合,顺序/随机访问集合,顺序/无序集合,泛型/非泛型集合,线程集合。 各集合类底层接口关系图 泛型与非泛型集合类的分析 泛型集合是类型安…

离散数学 速成

文章目录 一、命题逻辑的基本概念1. 命题2. 命题联结词 二、命题逻辑等值演算1. 等值式🌰子 2. 析取范式和合取范式🌰子 3. 主析取范式和主合取范式🌰子 4. 联结词的完备集🌰子 三、命题逻辑的推理理论🌰子 一、命题逻…

复制时源数据中null值不复制到

问题场景 例如有个对象要新增,后面的新增,我们希望判断一下是否有这个数据,如果有,则对上次提交的完善。如果没有,就新增。那么用其他方式实现很麻烦,本身的BeanUtils.copyProperties也是不大支持。 我们…

Java - Math类的常用方法及练习

目录 1.1 概述 1.2 常用方法 ❓面试题:为啥Math.round(-1.5)-1? 1.1 概述 java.lang.Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。类似这样的工具类,其所有方法均为静态方法,并且不会创建对象…

优雅玩转实验室服务器(三)vscode is all you need

在前两章解决了传输问题和连接问题后,我们紧接着遇到一个新的需求:我们需要coding呀,你当然可以说,我们可以用vim和对应的插件来搭建一个IDE呀,fine,我甚至可以给你推荐如下的教程: Vim 到底可…

oracle详细安装教程(附带百度网盘资源)

一,下载安装包途径 1.官网 Unauthorized Request 2.百度网盘分析 https://pan.baidu.com/s/1n221gdTK0Fcho839oRab9g 提取码1q2w 二,安装教程 1.下载完安装包后点击 setup.exe 如果出现一下的问题,使用windows10等系统安装oracle 11g等版本的数据库…

实验7:索引和视图定义

【实验目的】 1、了解索引和视图的含义 2、熟悉索引和视图的创建规则 3、掌握索引和视图的创建和管理 【实验设备及器材】 1、硬件:PC机; 2、软件:(1)Windows7; (2)Microsoft SQL Server 2012。 【主要内容】 索引的创建、删除、重建…

【acwing】92. 递归实现指数型枚举

穿越隧道 递归枚举、位运算 方法① 从1到n&#xff0c;顺序访问每位数&#xff0c;是否选择&#xff0c;每位数有两种状态&#xff0c;选1或不选0. AC代码如下&#xff1a; #include <iostream> using namespace std;const int N 100; // bool st[N]; int n;void dfs(in…

【Oracle】backup备份时报错ORA-19809,ORA-9804

Oracle备份数据库时报错 ORA-19809: limit exceeded for recovery files ORA-19804: cannot reclaim 10305536 bytes disk space from 4385144832 limit 1.清理过时的备份&#xff1a; 使用RMAN删除不再需要的过时备份&#xff0c;以释放空间。执行以下命令&#xff1a; DEL…

Hadoop高可用(主备切换)---配合Zookeeper

1. Hadoop高可用(Hadoop High Availability)概述 HA(High Available), 高可用&#xff0c;是保证业务连续性的有效解决方案&#xff0c;一般有两个或两个以上的节点&#xff0c;分为活动节点&#xff08;Active&#xff09;及备用节点&#xff08;Standby&#xff09;。通常把…