- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第
一文详解Golang中new和make的区别
目录1.简介2.new函数2.1new函数的作用2.2new函数的语法3.make函数3.1make函数的作用3.2make函数的语法4.区别对比4.1分配的类型4.2返回值类型4.3使用场景4.4示例代码对比5.总结
1.简介
在Go语言中,new和make是用于创建对象的两个内建函数,它们的使用方式和作用有所不同。正确理解new和make的区别对于编写高效的Go代码非常重要。下面我们将逐步介绍new和make的具体细节。
2.new函数
2.1new函数的作用
new函数用于创建一个指定类型的指针,并将其初始化为零值。它返回指向新分配的内存地址的指针。
2.2new函数的语法
new函数的语法非常简单,只需在关键字new后面跟上类型即可。
?funcnew(Type)*Type
下面是一个使用new函数创建结构体对象的示例代码:
?packagemain
?importfmt
?typePersonstruct{
???Namestring
???Age?int
?funcmain(){
???p:=new(Person)
???fmt.Println(p)
?}
在上述代码中,我们使用new函数创建了一个指向Person类型的指针p,并输出其值。运行结果为{0},表明p是一个指向Person类型零值的指针。
3.make函数
3.1make函数的作用
make函数用于创建内建类型(如切片、映射和通道)的对象,它返回一个已初始化的(非零值)对象。
3.2make函数的语法
make函数的语法与new函数有所不同,它需要指定类型和一些额外的参数。
?funcmake(Type,sizeIntegerType)Type
下面是一些使用make函数创建切片、映射和通道的示例代码:
?packagemain
?importfmt
?funcmain(){
???//创建一个长度为5,容量为10的整型切片
???s:=make([]int,5,10)
???fmt.Println(s)
???
???//创建一个键为string,值为int的映射
???m:=make(map[string]int)
???m[a]=1
???m[b]=2
???fmt.Println(m)
???
???//创建一个字符串通道
???c:=make(chanstring)
???fmt.Println(c)
?}
在上述代码中,我们使用make函数创建了一个长度为5,容量为10的整型切片s,一个键为string,值为int的映射m,并创建了一个字符串通道c。运行结果分别为[00000],map[a:1b:2]和0xc0000460c0,表明这些对象都被初始化为非零值。
4.区别对比
4.1分配的类型
new函数用于任何类型的分配,并返回一个指向该类型的指针。make函数只用于分配切片、映射和通道,并返回初始化后的切片、映射或通道对象。
4.2返回值类型
new函数返回指向分配类型的指针。make返回分配类型的初始化后的非零值。
4.3使用场景
new函数主要用于创建值类型的实例。值类型包括基本类型(如整型、浮点型、布尔型等)以及结构体。new函数返回一个指向新分配内存的指针,可以方便地对该实例进行操作和修改。
?packagemain
?importfmt
?typePointstruct{
???X,Yint
?funcmain(){
???p:=new(Point)
???p.X=10
???p.Y=20
???fmt.Println(p)//输出:{1020}
?}
make函数主要用于创建引用类型的对象。引用类型包括切片、映射和通道。由于引用类型需要在使用之前进行初始化,make函数返回的是初始化后的非零值对象,而不是指针。
?packagemain
?importfmt
?funcmain(){
???//创建一个长度为5,容量为10的整型切片
???s:=make([]int,5,10)
???f
您可能关注的文档
最近下载
- 人教版(PEP)小学六年级英语上册第四单元Unit 4 A Let’s talk精品课件.pptx VIP
- 2025中级保育师资格考试题库资料及答案(浓缩400题).pdf VIP
- 革命圣地西柏坡七言诗句.docx VIP
- (必会)中级保育师资格近年考试真题题库汇总(300题).docx VIP
- FSSC22000 V6食品安全管理体系管理手册 .pdf VIP
- 建筑工程图集 16J914-1:公用建筑卫生间.pdf VIP
- 外研版(2021)中职英语基础模块1 Unit 5 We Have Only One Earth For Better Performance 教案.docx VIP
- 07J912-1变配电所图集.pdf VIP
- 耳鼻咽喉科专科护士授权理论考试试题.docx VIP
- 工程项目保修期的工作安排措施.doc VIP
文档评论(0)