广告
返回顶部
首页 > 资讯 > 后端开发 > GO >Go语言中make和new函数的用法与区别
  • 760
分享到

Go语言中make和new函数的用法与区别

2024-04-02 19:04:59 760人浏览 独家记忆
摘要

相同点: make和new都是用来创建分配类型内存的。 不同点: 先看下面的代码 package main import "fmt" func main(){ var i *in

相同点:

make和new都是用来创建分配类型内存的。

不同点:

先看下面的代码

package main
import "fmt"
func main(){
  var i *int
  var x = 10
  *i=x
  fmt.Println(*i)
}

编译过程会出错

panic: runtime error: invalid memory address or nil pointer dereference <br data-filtered="filtered">[signal 0xc0000005 code=0x1 addr=0x0 pc=0x48b576]

我们的想法是把 10 赋值 i指向的地址,但是这里由于 *i 没有初始化,所以并不知道 *i的地址是什么,如果直接 *i的赋值为10,那么肯定是不行的(10这个地址没有)

所以要想使用 *i,需要把 x的地址给i,修改成如下代码

var i *int
var x = 10
i=&x
fmt.Println(*i)

补充: * 代表取地址里内容&代表取地址

或者使用 new 进行初始化,代码如下:

var x = 10
var i *int i = new(int)
*i=x
fmt.Println(*i)

new的源代码如下

它只接受一个参数,这个参数是一个类型,分配好内存后,返回一个指向该类型内存地址的指针。同时请注意它同时把分配的内存置为零,也就是类型的零值。

make也是用于内存分配的,但是和new不同,它只用于chan、map以及slice的内存创建,

而且它返回的类型就是这三个类型本身,而不是他们的指针类型,因为这三种类型就是引用类型,所以就没有必要返回他们的指针了。

综上:

二者都是内存的分配(堆上)

区别1

  • make只用于slice、map以及channel的初始化(非零值);
  • new用于类型的内存分配,并且内存置为零。

区别2

  • make返回的还是这三个引用类型本身;
  • new返回的是指向类型的指针。

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对编程网的支持。如果你想了解更多相关内容请查看下面相关链接

您可能感兴趣的文档:

--结束END--

本文标题: Go语言中make和new函数的用法与区别

本文链接: https://www.lsjlt.com/news/164395.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Go语言中make和new函数的用法与区别
    相同点: make和new都是用来创建分配类型内存的。 不同点: 先看下面的代码 package main import "fmt" func main(){ var i *in...
    99+
    2022-11-13
  • go语言中的new与make有什么区别
    本篇内容主要讲解“go语言中的new与make有什么区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“go语言中的new与make有什么区别”吧!new() 和...
    99+
    2022-10-18
  • 详解Go语言中make和new的区别
    目录写在前面实现原理makenew总结参考写在前面 虽然 make 和 new  都是能够用于初始化数据结构,但是它们两者能够初始化...
    99+
    2023-02-26
    Go语言make new区别 Go语言make new Go make new
  • Go语言中make和new有什么区别
    这篇文章主要介绍“Go语言中make和new有什么区别”,在日常操作中,相信很多人在Go语言中make和new有什么区别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Go语言中make和new有什么区别”的疑...
    99+
    2023-07-05
  • go语言中make和new的区别有哪些
    这篇文章主要介绍“go语言中make和new的区别有哪些”,在日常操作中,相信很多人在go语言中make和new的区别有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”go语言中make和new的区别有哪些...
    99+
    2023-07-04
  • GO语言make和new关键字的区别
    目录1. new 和 make2. make和new比较3. new函数4. make函数make使用场景 slice map channelnew 使用场景 大部分使用在结构体当中...
    99+
    2023-05-15
    Go语言 new make关键词区别 Go语言 new make关键词 Go语言 new make
  • Go语言中make和new函数怎么使用
    这篇文章主要讲解了“Go语言中make和new函数怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Go语言中make和new函数怎么使用”吧!相同点:make和new都是用来创建分配类...
    99+
    2023-07-02
  • Go语言中new和make关键字有哪些区别
    本篇内容介绍了“Go语言中new和make关键字有哪些区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!newnew 是一个内置函数,它会分...
    99+
    2023-07-05
  • Go语言中new和make关键字的区别是什么
    这篇文章主要介绍了Go语言中new和make关键字的区别是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Go语言中new和make关键字的区别是什么文章都会有所收获,下面我们一起来看看吧。newnew 是一...
    99+
    2023-07-05
  • go语言中方法和函数的区别有哪些
    本文小编为大家详细介绍“go语言中方法和函数的区别有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“go语言中方法和函数的区别有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。区别:1、函数function...
    99+
    2023-07-04
  • go语言中方法和函数的区别是什么
    区别:1、函数function是一段具有独立功能的代码,可以被反复多次调用,从而实现代码复用;而方法method是一个类的行为功能,只有该类的对象才能调用。2、方法有接受者,而函数无接受者。3、函数不可以重名,而方法可以重名。4、调用方式不...
    99+
    2023-05-14
    go语言 Golang
  • Go语言学习之new函数的用法详解
    目录1、new函数介绍2、示例3、总结1、new函数介绍 在 Go 语言中,new 函数用于动态地分配内存,返回一个指向新分配的零值的指针。它的语法如下: func new(Type...
    99+
    2023-05-20
    Go new函数用法 Go new函数 Go new
  • R语言中cbind、rbind和merge函数的使用与区别
    cbind: 根据列进行合并,即叠加所有列,m列的矩阵与n列的矩阵cbind()最后变成m+n列,合并前提:cbind(a, c)中矩阵a、c的行数必需相符 rbind: 根据行进行...
    99+
    2022-11-11
  • R语言中c()函数与paste()函数的区别说明
    c()函数:将括号中的元素连接起来,并不创建向量 paste()函数:连接括号中的元素 例如 c(1, 2:4),结果为1 2 3 4 paste(1, 2:4),结果为“1 2” ...
    99+
    2022-11-12
  • Go语言中的函数与方法怎么使用
    这篇文章主要介绍了Go语言中的函数与方法怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Go语言中的函数与方法怎么使用文章都会有所收获,下面我们一起来看看吧。函数定义语法与大部分语言一致,Go语言中的函数...
    99+
    2023-07-02
  • 详解C语言中strcpy函数与memcpy函数的区别与实现
    目录字符串拷贝函数(strcpy)函数原型应用实例缺点内存拷贝函数(memcpy)函数原型应用实例memcpy的模拟实现(my_memcpy)实现样例具体实现字符串拷贝函数(strc...
    99+
    2022-12-29
    C语言 strcpy memcpy区别 C语言 strcpy memcpy实现 C语言 strcpy memcpy
  • R语言中cbind、rbind和merge函数怎么使用与区别
    本篇内容介绍了“R语言中cbind、rbind和merge函数怎么使用与区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!cbind: 根据...
    99+
    2023-06-08
  • 一文了解Go语言中的函数与方法的用法
    目录函数定义语法函数定义示例无返回值函数单一返回值函数多返回值函数方法(Method)定义方法(Method)示例基本类型结构体类型函数定义语法 与大部分语言一致,Go语言中的函数定...
    99+
    2022-11-13
  • Go语言的基本语法与常用函数是什么
    今天小编给大家分享一下Go语言的基本语法与常用函数是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、基本语法标识符命名...
    99+
    2023-07-02
  • C语言中break与continue的用法和区别详解
    目录前言一、循环体中两者的作用1.while循环2.for循环3.do while循环二、switch语句总结前言 本文将通过简单的实例来详细分析在C语言中break语句和conti...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作