Go new 与 make

这篇具有很好参考价值的文章主要介绍了Go new 与 make。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Go new 与 make

在Go语言中,"new""make"都是用于动态分配内存的关键字,但它们有不同的用途和区别。

  1. "new": 在Go语言中,"new"是一个内建函数,用于值类型(基本类型和用户定义的结构体类型)分配内存,并返回指向新分配的零值的指针。值类型是直接存储值的类型,比如int、float64、struct等。"new"函数返回的指针指向一个新分配的内存空间,其中所有的位都被设置为零值。

使用"new"函数的语法如下:

ptr := new(Type)

其中,Type是要创建的值类型的名称,ptr是指向新分配内存的指针。

例如:

ptr := new(int) // 分配一个int类型的零值,并返回指向该int的指针

需要注意的是,"new"函数只分配内存,并不对初始化值进行初始化。对于引用类型(如slicemapchannel)的初始化,应该使用"make"函数。

  1. "make": 在Go语言中,"make"是一个内建函数,用于创建引用类型(slice、map和channel)的实例,并进行初始化。引用类型是指向底层数据结构的指针,它们在使用前必须进行初始化。"make"函数为引用类型分配内存,并进行一些内部设置,然后返回一个已初始化的引用类型的实例。

使用"make"函数的语法如下:

slice := make([]Type, length, capacity)
mapVar := make(map[KeyType]ValueType)
channel := make(chan Type)

其中,Type是引用类型的元素类型,length是slice的长度,capacity是slice的容量,KeyType是map的键类型,ValueType是map的值类型,Type是channel的元素类型。

例如:

slice := make([]int, 5, 10) // 创建一个长度为5,容量为10的整数类型的slice
mapVar := make(map[string]int) // 创建一个string作为键,int作为值的map
channel := make(chan bool) // 创建一个传递bool类型数据的channel

总结区别:文章来源地址https://www.toymoban.com/news/detail-621556.html

  • "new"函数用于值类型(基本类型和结构体类型)的内存分配,不会对对象进行初始化,返回指向零值的指针。
  • "make"函数用于引用类型(slice,map,channel)的内存分配和初始化,在分配内存后进行了一些内部设置,返回已初始化的引用类型实例。

到了这里,关于Go new 与 make的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Golang】VsCode下开发Go语言的环境配置(超详细图文详解)

    📓推荐网站(不断完善中):个人博客 📌个人主页:个人主页 👉相关专栏:CSDN专栏、个人专栏 🏝立志赚钱,干活想躺,瞎分享的摸鱼工程师一枚 ​ 话说在前,Go语言的编码方式是 UTF-8 ,理论上你直接使用文本进行编辑也是可以的,当然为了提升我们的开发效率我们还是需

    2024年02月07日
    浏览(83)
  • Go 开发IDE全览:GoLand VS VSCode全面解析

    在软件开发的世界里,开发环境的选择与配置是成功项目的基础之一。特别是在Go(又名Golang)这样一个逐渐获得主流认同、在微服务和云计算领域有着广泛应用的编程语言中,选择合适的开发工具就显得尤为重要。虽然Go语言自身具有简洁、高效的特点,但好的开发工具能极

    2024年02月08日
    浏览(50)
  • Go开发IDE全览:GoLand vs VSCode全面解析

    关注【TechLeadCloud】,分享互联网架构、云服务技术的全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。 在软件开发的世界里

    2024年02月08日
    浏览(47)
  • Golang开发-new关键字

    在Go语言中,new用于创建一个新的零值对象,并返回指向该对象的指针。它是Go语言中用于分配内存的一种方式。 new的语法如下: 其中,Type表示要创建的对象的类型,ptr是指向新对象的指针。 以下是一个示例,演示如何使用new创建一个新的对象: 在上述

    2024年02月09日
    浏览(43)
  • Go语言之流指针类型,new函数

    计算机中所有的数据都必须放在内存中,不同类型的数据占用的字节数不一样,例如 int 占用 4 个字节。为了正确地访问这些数据,必须为每个字节都编上号码,就像门牌号、身份证号一样,每个字节的编号是唯一的,根据编号可以准确地找到某个字节。 我们将内存中字节的

    2024年02月16日
    浏览(36)
  • Golang:Go语言结构

    在我们开始学习 Go 编程语言的基础构建模块前,让我们先来了解 Go 语言最简单程序的结构。 Go 语言的基础组成有以下几个部分: 包声明 引入包 函数 变量 语句 表达式 注释 接下来让我们来看下简单的代码,该代码输出了\\\"Hello World!\\\": 让我们来看下以上程序的各个部分: 第一

    2024年02月10日
    浏览(58)
  • golang实现webgis后端开发

    目录 前言 二、实现步骤 1.postgis数据库和model的绑定 2.将pg库中的要素转换为geojson (1)几何定义 (2)将wkb解析为几何类型 (3)定义geojson类型 (4)数据转换 (5)数据返回  2.前端传入的geojson储存到数据库 3、其他功能实现 总结         停更了接近一个月都在研究一门新语言gola

    2024年02月08日
    浏览(50)
  • Golang教程——配置环境,再探GoLand

    Go(也称为Golang)是一种开源的编程语言,由Google开发并于2009年首次发布。Go语言旨在提供一种简单、高效、可靠的编程语言,适用于构建可扩展的软件系统。 Go语言具有以下特点: 简洁易读: Go语言的语法简洁明了,易于阅读和理解。它摒弃了一些复杂的语法和概念,使得

    2024年02月08日
    浏览(38)
  • Go语言(Golang)数据库编程

    要想连接到 SQL 数据库,首先需要加载目标数据库的驱动,驱动里面包含着于该数据库交互的逻辑。 sql.Open() 数据库驱动的名称 数据源名称 得到一个指向 sql.DB 这个 struct 的指针 sql.DB 是用来操作数据库的,它代表了0个或者多个底层连接的池,这些连接由sql 包来维护,sql 包会

    2024年02月03日
    浏览(89)
  • 【GoLang】MAC安装Go语言环境

    小试牛刀 首先安装VScode软件 或者pycharm mac安装brew软件  brew install go 报了一个错误 不提供这个支持  重新brew install go 之后又重新brew reinstall go 使用go version 可以看到go 的版本 使用go env  可以看到go安装后的配置 配置一个环境变量 vim ~/.zshrc,  

    2024年02月15日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包