go 指针结构体赋值

  • 1、前言
  • 2、举例
  • 3、分析
  • 4、解决

1、前言

日常生产中,当我们使用go指针结构体赋值时,会报出invalid memory address or nil pointer dereference错误,那错误是如何产生的呢,我们该如何解决呢

2、举例

看一下例子

package mainimport "fmt"type User struct {UserName string `json:"user_name"`Password string `json:"password"`
}
func main() {var user *Useruser.UserName  = "张三"user.Password = "zhangsan"fmt.Println(user)
}

当我们运行这个实例时,就会发现错误

3、分析

我们要了解指针,指针地址在 Go 中 * 代表取指针地址中存的值,& 代表取一个值的地址。对于指针,我们一定要明白指针储存的是一个值的地址,但本身这个指针也需要地址来储存,初始化指针,指针变量的地址为0xc00009a008, 指针值为nil此时,i为nil,系统没有给*i分配地址,相当于给一个nil地址赋值,肯定会出错

4、解决

直接给我们定义的指针结构体初始一下内存地址,当我们赋值的时候指向我们重新分配的地址,就可以解决这个问题啦

package mainimport "fmt"type User struct {UserName string `json:"user_name"`Password string `json:"password"`
}
func main() {var user *Useruser = new (User)user.UserName  = "张三"user.Password = "zhangsan"fmt.Println(user)
}

正常运行

go 结构体赋值 invalid memory address or nil pointer dereference相关推荐

  1. runtime error: invalid memory address or nil pointer dereference

    runtime error: invalid memory address or nil pointer dereference 解决方法: tcallback((unsigned char*)pac ...

  2. v2ray服务端启动出现panic: runtime error: invalid memory address or nil pointer dereference

    panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentatio ...

  3. 解决docer login报错 panic: runtime error: invalid memory address or nil pointer dereference

    问题描述 不知道自己做了什么操作,然后进行docker login的时候,突然出现以下错误 panic: runtime error: invalid memory address or nil po ...

  4. panic: runtime error: invalid memory address or nil pointer dereference

    只可以给索引1和3赋值,因为只有它们分配了内存,才可以赋值,如果我们给索引0赋值,运行的时候,会提示无效内存或者是一个nil指针引用. 解决办法 :我们要先给索引0分配内存,然后再进行赋值修改.

  5. golang怎么给空结构体赋值

    一.前言 最近没少使用golang,也没经过系统的学习,直接就上去开发了,遇到不少坑也学到不少东西,本次记录下给空结构体赋值的问题. 二.案例 1.结构体结构及错误 type Test struct ...

  6. C语言结构体赋值和有指针成员的结构体赋值

    1  结构体赋值 #include <windows.h>struct MyStruct {int a;int b;char c[20]; };int APIENTRY WinMain(H ...

  7. 【C语言】结构体赋值

    结构体在 C 程序中使用的较为频繁,能对数据有一定的封装的作用.对一个结构体赋值时,经常采用的方式是,分别对其成员变量赋值.那么能否将一个结构体用赋值号("=")直接赋值给另一个结 ...

  8. 1006.c++中结构体赋值碰到的bug

    在项目调试过程中,碰到 一个这样的问题,c++结构体赋值问题.在c语言中,一个结构体变量是可以赋值给另外一个结构体变量的.在c++情况有所变化,仅此记录一下. 此为一个概率事件. //定义接收数据数据 ...

  9. 结构体复数相乘c语言,复数乘法中的结构体赋值实现代码

    复数乘法中的结构体赋值实现代码 废话不多说,直接上代码 复制代码 代码如下: #include using namespace std; typedef struct { double real; d ...

最新文章

  1. 《AI系统周刊》第4期:DNN模型压缩之剪枝(Pruning)
  2. 买了云服务器和域名怎么进行解析
  3. mysql搭建主主_mysql主主配置
  4. PageRank算法简介及Map-Reduce实现
  5. NHibernate3.0剖析:Query篇之NHibernate.Linq标准查询
  6. android检测是否跳出应用程序,android – 检测应用程序何时打开/恢复
  7. Android AsyncTask异步线程
  8. bitnami mysql_最新 Bitnami redmine安装与配置
  9. lumion渲染太慢、卡顿怎么办?分享3个加快渲染的小技巧
  10. 2020年度第十届吴文俊人工智能科学技术奖获奖名单出炉!李德毅院士获最高成就奖...
  11. Pytorch文本分类
  12. 【计算机网络】Socket聊天室程序
  13. 肖sir__面试就业课___数据库
  14. Java程序员如何成为优秀的架构师
  15. Unity-模型导入-材质
  16. 【微信小程序学习】搜索音乐页面代码实现
  17. PTC creo 3.0 安装教程
  18. 线性表操作(线性表)
  19. Electron如何支持ESM模块
  20. 安逸云中小云厂商机遇

热门文章

  1. 初探Disruptor
  2. 国内BI工具/报表工具厂商简介
  3. VUE+ElementUI+PHP+MySQL实现仿照印记中文网站(2)----前端架构
  4. 【NODEJS】ejs
  5. 公路车骑行耳机推荐,分享五款适合公路骑车的耳机
  6. 2022年化工自动化控制仪表考试试题及模拟考试
  7. 求职面试中这三大传闻你信过吗?
  8. 714. 买卖股票的最佳时机含手续费+贪心
  9. python控制autocad_Python AutoCAD系统设置如何实现 Python AutoCAD系统设置实现代码
  10. 生物 期中考试 参考答案