go中make、new和直接var的区别

文章目录

      • 直接var
      • make
      • new
      • 小结

直接var

func main(){var sli []intfmt.Println(sli)					// 打印结果为:[]fmt.Println(len(sli))				// 打印结果为:0fmt.Println(cap(sli))				// 打印结果为:0fmt.Println(sli[0])					// panic: index out of range [0] with length 0
}

此时sli只分配了这个切片结构,还没有分配底层数组,存储元素个数0容量也为0
在这里插入图片描述

make

var sli []int = make([]int,2,5)

此时make不仅会为sli分配这个切片结构,还会开辟一段内存作为sli的底层数组,并将底层数组的值初始化为整型的默认值0
在这里插入图片描述
向sli中新增一个元素3

var sli []int = make([]int,2,5)
sli = append(sli,3)

在这里插入图片描述
注意:make只能用来为slice、map、channel类型分配内存和初始化一个对象

new

func main(){sli := new([]int)fmt.Println(*sli)			// 打印为:[]fmt.Println(len(*sli))		// 打印为:0fmt.Println(cap(*sli))		// 打印为:0fmt.Println((*sli)[0])		// panic: index out of range [0] with length 0
}

此时new会为sli指向一个没有分配底层数组的切片结构,存储元素个数容量都为0
在这里插入图片描述

小结

  1. make既分配内存,也初始化内存。new只是将内存清0,并没有初始化内存
  2. make返回的是引用类型本身。new返回的是指向类型的指针
  3. make只能用来分配及初始化slice、map、channel。new可以分配任意类型的数据

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

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

相关文章

论述类文本知识框架_高考语文“论述类文本阅读”:三步走,拿满分

【原创首发】新的学期开始了。高三的定位考试也结束了。成绩下来了,有的同学拿着卷子找着我:“老师,你看看,我第一道大题三道错了两道,咋办呀?”高考语文试卷的第一大道试题”论述类文本阅读“这道题&#…

mysql数据自定义随机_Mysql 自定义随机字符串

前几天在开发一个系统,需要用到随机字符串,但是mysql的库函数有没有直接提供,就简单的利用现有的函数东拼西凑出随机字符串来.下面简单的说下实现当时.1.简单粗暴.select ..., substring(MD5(RAND()),floor(RAND()*26)1,6) as rand_str .....…

php连接mysql乱码原因_PHP连接MYSQL出现乱码的原因与解决办法

PHP连接mysql出现乱码的原因与解决方法解决MySql数据库乱码的一个首要前提是保证 数据库数据表前端显示 编码一致,国内项目一般统一设定为GB2312或GBK,而国际化项目则一般使用utf8。另外,字符集设定完毕之后记得重启目标机MySql服务。PHP连接…

linux查看非注释行_Linux筛除空行和注释行的技巧

CentOS7.3学习笔记总结(四十一)- Linux筛除空行和注释行的技巧 在linux系统中的很多文件,写程序的人为了方便查阅整篇文档,写了很多注释,加了很多空行,虽然方便了整体的阅读,但是参数的添加、删除、修改等就没有那么友好了,我们就需要利用命令行筛选出没有这些内容的内容…

mysql数据迁移双写_数据迁移类测试策略

二、迁移类测试策略1、概述随着业务需求或数据量增长到一定程度,往往需要进行数据库切换,这里就伴随这数据迁移。关键字: 全量数据迁移,增量数据迁移,分库分表,数据双写,oracle、mysql、hbase……

where is null mysql_SQL中WHERE变量IS NULL条件导致全表扫描问题的解决方法

SET SQL SELECT * FROM Comment with(nolock) WHERE 11And (ProjectIds Is Null or ProjectId ProjectIds)And (Scores is null or Score Scores)印象中记得,以前在做Oracle开发时,这种写法是会导致全表扫描的,用不上索引,不知道…

lambda的java_一分钟搞明白java8中的lambda

项目结构是这样的User是一个普通的pojo类UserCompare是一个实现了Comprator的类现在我们有一个需求:给一个user组成的list 按照user的年龄排序。实现不难,代码如下:这种方法由于sort方法的第二个参数是Comparator 所以你要写一个实现类(我这里…

读芯术python教程答案_攻略Python的免费书单:走进编程,从这五本书开始

全文共1245字,预计学习时长5分钟图源:unsplashPython一向是数据科学家最青睐的编程语言,它的语法相对简单、易于学习。除了机器学习数据库之外,还有非常活跃的开发人员社区,维护着各种库,用于数据分析、操作…

JAVA minaio模型_分布式系统之Java IO模型

1.正确理解IO定义IO涉及两个系统对象,一个是用户进程,一个是系统内核阻塞IO和非阻塞IO 针对是对用户进程来讲的调用函数。同步IO和异步IO针对的是系统内核。select,poll,epoll是Linux系统使用最多的IO多路复用机制,采用的都是同步IO。IO读取过…

java 写一个计算器_java编写一个计算器类

展开全部import java.awt.BorderLayout;import java.awt.Color;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFrame;import javax.swin…

java文本框背景_用Java编写小程序(包含组合框下拉和文本框)变换背景颜色

展开全部代码如下:import java.awt.Color;import java.awt.Dimension;import java.awt.FlowLayout;import java.util.HashMap;import java.util.Map;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JTextField;public class App exten…

关于java_关于Java基础

一、方法的重载与重写方法重载(overload)是让类以统一的方式处理不同类型数据的一种手段。调用方法时通过传递给它们的不同个数和类型的参数来决定具体使用哪个方法,这就是多态性。所谓方法重载是指在一个类中,多个方法的方法名相同,但是参数…

yii2 提供接口给java_yii2写api接口步骤

yii2写api接口步骤Yii2如何实现RESTful风格的API(推荐:《YII教程》 )1、建立单独的应用程序为了增加程序的可维护性,易操作性,我们选择新建一套应用程序,这也是为了和前台应用、后台应用区分开操作。在WEB前端(frontend)和后端(ba…

java caller_js中的caller和callee属性

caller返回一个对函数的引用,该函数调用了当前函数。functionName.callerfunctionName 对象是所执行函数的名称。如果一个函数f是在全局作用域内被调用的,则f.caller为null,相反,如果一个函数是在另外一个函数作用域内被调用的,则f.caller指向调用它的那个函数.该属…

java第二部分项目_Java_第二次作业:项目构思与实现

写在最前:我我我我我我靠,以后再也不再ddl截止前1小时调试程序了!之前在DDL前1小时修改程序,当我改完后,我想着,再把之前的测试样例跑一遍,如果都对就OK了。就在这时,问题出现了&…

java变量用来干嘛_Java

一、Maven的简介1、Maven是什么?Apache Maven是一个软件项目管理的综合工具。基于项目对象模型(POM)的概念,提供了帮助管理构建、文档、报告、依赖、发布等方法,Maven简化和标准化项目建设过程。处理编译,分配,文档&am…

mysql 视图 数据相加_MySQL

查看安装路径ps -ef|grep mysql1,配置linux虚拟机,修改IP????? vim /etc/sysconfig/network-scripts/ifcfg-eth02,配置完网卡之后,执行清空命令3,reboot查看生产环境上传文件MySQL5.5编译方式安装过程参考连接&am…

java 任意代码执行漏洞_php-fpm在nginx特定环境下的任意代码执行漏洞(CVE-2019-11043)...

目录0x01 漏洞介绍0x02 漏洞影响0x03 漏洞复现0x01 漏洞介绍在长亭科技举办的 Real World CTF 中,国外安全研究员 Andrew Danau 在解决一道 CTF 题目时发现,向目标服务器 URL 发送%0a符号时,服务返回异常,疑似存在漏洞。在nginx上…

c enum能像java一样吗_不一样的Java Enum

Emum是在Java5中引入的新特性,从那开始,它被广泛的用在不同的Java应用中,相比于C和C的Enum,Java的Enum功能更加强大。但是很多开发人员暂时还没意识到它的强大之处,在Enum的一些细节问题上把握的还不到位。Enum的特性及…

java se 9.0.4_jre 9下载(Java SE Runtime Environment)下载

JRE9官方下载是运行JAVA程序不可缺少的环境。JRE中由ClassLoader负责查找和加载程序引用到的类库,基础类库ClassLoader会到rt.jar中自动加载,其它的类库,ClassLoader在环境变量CLASSPATH指定的路径中搜索,按照先来先到的原则&…