当前位置: 首页 > news >正文

res := model.UserConsume{}与res := model.UserConsume{}区别

在Go语言中,res := &model.UserConsume{} 与 res := model.UserConsume{} 的主要区别在于变量的类型和内存分配方式:

类型差异

  • res := &model.UserConsume{}:创建一个 *model.UserConsume类型的变量(指针类型),指向新分配的 model.UserConsume结构体
  • res := model.UserConsume{}:创建一个 model.UserConsume类型的变量(值类型),直接包含结构体数据

内存分配方式:
&model.UserConsume{}:

  • 在堆上分配内存(heap allocation)
  • 返回指向该内存地址的指针
  • 适合需要在函数间传递或生命周期较长的对象

model.UserConsume{}:

  • 在栈上分配内存(stack allocation)
  • 直接包含结构体数据
  • 适合临时使用或生命周期较短的对象
// 指针类型 - 适用于需要修改原对象或避免拷贝的场景
res1 := &model.UserConsume{}
// res1 是 *model.UserConsume类型
// 可以通过 res1.field 访问字段// 值类型 - 适用于只读或临时使用的场景
res2 := model.UserConsume{}
// res2 是 model.UserConsume类型
// 如果需要指针,需要使用 &res2

 

性能考虑

  • 指针方式适合大型结构体,避免拷贝开销
  • 值方式适合小型结构体,栈分配更快且自动回收
http://www.hskmm.com/?act=detail&tid=20430

相关文章:

  • test2
  • test1
  • tset3
  • test4
  • 【Nordic随笔】
  • bazel架构学习
  • 数据类型-集合
  • ArrayPool.Shared解说
  • PS与可画基础介绍
  • OpenMP并行化编程指南
  • OneNote 安装 OneNote Gem 的第三方插件
  • 2025.9.28总结
  • 7个免费的PPT模板下载网站,新手也能做出高级感PPT!
  • [ERR] 1118 - Row size too large ( 8126)
  • 数据类型-字典
  • 牛客刷题-Day7
  • 第2周
  • 苍穹外卖-day03(公共字段自动填充,新增菜品,菜品分页查询,删除菜品,修改菜品) - a
  • PWN手的成长之路-03-bjdctf_2020_babystack
  • 集合进阶-List集合
  • 对四大经典请求方式的疑惑
  • WordPress文章设置固定链接或永久链接 - 教程
  • 个人用云计算学习笔记 --15. (Linux 系统启动原理、Linux 防火墙管理)) - 实践
  • dotnet项目编译运行
  • linux virtualenv使用
  • 坚果云官方插件实现obsidian多端同步
  • Tk核心概念
  • 位运算的奇技淫巧:builtin内建函数
  • 数据类型-列表