golang make与new

admin 2024-12-27 00:55:39 编程 来源:ZONE.CI 全球网 0 阅读模式

作为一名专业的golang开发者,我们经常会使用make和new来创建变量。虽然这两个函数看起来很相似,但它们在实际使用中有着重要的区别。本文将详细介绍make和new函数的用法和区别。

make函数

make函数通常用于创建切片(slice)、映射(map)和通道(channel),它的语法是:

make(T, args)

其中 T 表示要创建的切片、映射或通道的类型,args 表示该类型的参数。例如,我们可以用make函数创建一个长度为5的整型切片:

slice := make([]int, 5)

make函数会分配适当的内存空间,并返回一个初始化后的切片、映射或通道。对于切片和映射,make函数会分配足够的内存空间来存储所需的元素。对于通道,make函数会分配一个未初始化的通道,需要手动初始化通道的缓冲区大小。

new函数

new函数用于创建指定类型的变量,并返回一个指向该变量的指针。它的语法是:

new(T)

其中 T 表示要创建的变量的类型。例如,我们可以用new函数创建一个整型变量:

ptr := new(int)

new函数会分配足够的内存空间来存储指定类型的变量,并返回一个指向该内存地址的指针。这个指针指向的变量是未初始化的,如果需要初始化,可以使用赋值语句来完成。

make与new的区别

虽然make和new函数都可以用来分配内存空间,但它们的作用不同:

1. make函数

make函数主要用于创建切片、映射和通道,它会分配适当的内存空间并初始化后返回。

2. new函数

new函数主要用于创建变量,并返回一个指向该变量的指针。这个指针指向的变量是未初始化的,需要手动进行初始化。

应用场景

根据上述的区别,我们可以在不同的场景中选择合适的函数:

1. 使用make函数的场景

如果我们需要创建一个长度可变的切片,或者需要创建一个键值对的映射,或者需要创建一个用于通信的通道,那么我们应该使用make函数。make函数会自动分配足够的内存来存储所需的元素,并返回一个已初始化的切片、映射或通道。

2. 使用new函数的场景

如果我们只是需要创建一个变量,并且对变量进行赋值操作,那么我们可以使用new函数。new函数会分配足够的内存空间来存储指定类型的变量,并返回一个指向该内存地址的指针。我们可以通过指针来操作该变量,包括对其进行赋值、读取和修改等操作。

总结

make和new函数是golang中常用的内存分配函数。make函数主要用于创建切片、映射和通道,它会分配适当的内存空间并初始化后返回;而new函数主要用于创建变量,并返回一个指向该变量的指针,该指针指向的变量是未初始化的。

根据不同的需求,我们可以灵活地选择使用make或new函数。通过合理地应用这两个函数,我们能更好地管理内存,并提高代码的效率。

以太坊cppgolang区别 编程

以太坊cppgolang区别

以太坊是一种去中心化的开源平台,它采用智能合约技术,旨在构建和运行不受干扰的分布式应用程序。作为目前最受欢迎的区块链平台之一,以太坊提供了多种编程语言的支持,其
progolang 编程

progolang

Go语言(Golang)是由Google开发的一门静态类型编程语言。作为一名专业的Golang开发者,我深知这门语言的优势和特点。在本文中,我将介绍Golang
golangn个发送者 编程

golangn个发送者

Golang是一种开源的编程语言,由Google团队开发,旨在提高程序的并发性和简化软件开发过程。在Go语言中,有时需要向多个接收者发送信息。本文将介绍如何在G
golang技能图谱 编程

golang技能图谱

从互联网行业的快速发展到人工智能技术的日益成熟,各种编程语言也应运而生。而在这众多的编程语言中,Golang(即Go)作为一门强大且高效的开发语言备受关注。Go
评论:0   参与:  24