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

Go内置函数make和new的区别?

在这里插入图片描述
首先纠正一下makenew 是内置函数,不是关键字。

变量初始化,一般分为2步,变量声明+变量内存分配,var 关键字就是用来声明变量的,newmake 函数主要是用来分配内存的。

var 声明值类型的变量时,系统会默认认为他分配内存空,并赋该类型的默认值。
比如布尔,数字,字符串,结构体

如果指针类型或者引用类型的变量,系统不会为他分配空间,默认就是nil。此时如果你想直接使用,那么系统会抛出异常,必须进行内存分配后,才能使用。

newmake 两个内存函数,主要用来分配内存空间,有个内存,变量就能使用了,主要有以下2点区别:

使用场景:
make 只能用来分配及初始化类型为slice,map,chan的数据
new可以分配任意类型的数据,并且置零。

返回值:
make 函数原型如下,返回的是slice,map,chan类型本身
这3种类型是引用类型,就没有必要返回他们的指针:

func make(t Type, size ...IntegerType) Type

new函数原型如下,返回一个指向该类型内存地址的指针

func new(Type) *Type
http://www.lryc.cn/news/174432.html

相关文章:

  • 动手学深度学习(pytorch版)第二章-2.3线性代数Note-linear-algebra
  • Docker CMD指令如何覆写
  • 动手吧,vue单独使用的复选框
  • 升级iOS17后可以降级吗?iOS17退回iOS16方法教程分享
  • 基于STM32和LORA组网的养老院智能控制系统设计(第十八届研电赛)
  • 关于Qt适配不同分辨率和缩放率时可能遇到的问题和解决方案
  • 第1篇 目标检测概述 —(1)目标检测基础知识
  • Discuz论坛网站标题栏Powered by Discuz!版权信息如何去除或是修改?
  • springboot整合aop,实现日志操作
  • openjdk和oracle jdk的区别
  • 深度学习-Python调用ONNX模型
  • [2023.09.24]: 今天差点又交白卷
  • css,环形
  • php食堂点餐系统hsg5815ABA2程序-计算机毕业设计源码+数据库+lw文档+系统+部署
  • Vite打包时使用plugin解决浏览器兼容问题
  • java Excel 自用开发模板
  • 34.CSS魔线图标的悬停效果
  • Django — 会话
  • SpringBoot集成easypoi实现execl导出
  • 第9章 【MySQL】InnoDB的表空间
  • 工作、生活常用免费api接口大全
  • 寻找单身狗
  • 【pytest】 allure 生成报告
  • 动态链接库搜索顺序
  • 【CAN、LIN通信的区分】
  • Redis环境配置
  • UG NX二次开发(C++)-采用std::vector对体对象的质心进行排序
  • 一点思考|关于「引领性研究」的一点感悟
  • 什么是HTTP/2?它与HTTP/1.1相比有什么改进?
  • IDEA