千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > Go语言new和make的使用区别和优异实践?

Go语言new和make的使用区别和优异实践?

来源:千锋教育
发布人:xqq
时间: 2023-10-13 07:43:31 1697154211

一、new关键字的使用

new是Go语言的内建函数,用于为值类型和引用类型分配内存空间并返回指向该内存空间的指针。它的使用格式为:

new(Type)

其中Type是所需对象的类型。new函数返回的是指向该对象的指针。

1、值类型的创建

对于值类型的对象,使用new关键字会分配一块内存,并返回指向该内存的指针。下面是一个示例:

type Person struct {    Name string    Age  int}func main() {    p := new(Person)    p.Name = "John"    p.Age = 25    fmt.Println(p) // 输出:&{John 25}}

在上面的示例中,通过new关键字创建了一个Person对象,并对其进行了赋值操作。

2、引用类型的创建

对于引用类型的对象(如切片、映射和通道),new关键字并不直接适用。对于引用类型的对象,我们需要使用make关键字进行创建。下面将详细介绍make的使用。

二、make关键字的使用

make是Go语言的内建函数,主要用于创建引用类型的对象。它的使用格式为:

make(Type, size)

其中Type是所需对象的类型,size是用于初始化该对象的参数。

1、切片的创建

切片是Go语言中常用的引用类型,我们可以使用make关键字创建一个切片对象。下面是一个示例:

func main() {    s := make([]int, 5, 10)    fmt.Println(s) // 输出:[0 0 0 0 0]    fmt.Println(len(s)) // 输出:5    fmt.Println(cap(s)) // 输出:10}

在上面的示例中,使用make关键字创建了一个初始长度为5,容量为10的整型切片。

2、映射的创建

映射也是引用类型的一种,我们同样可以使用make关键字创建一个映射对象。下面是一个示例:

func main() {    m := make(map[string]int)    m["apple"] = 1    m["banana"] = 2    fmt.Println(m) // 输出:map[apple:1 banana:2]}

在上面的示例中,使用make关键字创建了一个空的字符串到整数的映射,并对其进行了赋值操作。

3、通道的创建

通道是Go语言中用于协程之间通信的重要机制,同样可以使用make关键字创建通道对象。下面是一个示例:

func main() {    ch := make(chan int)    go func() {        ch <- 42    }()    result := <-ch    fmt.Println(result) // 输出:42}

在上面的示例中,使用make关键字创建了一个整型通道,并通过协程向通道发送了一个值,并从通道中接收到该值。

三、new和make的优异实践

在使用new和make时,我们需要根据对象的类型和需求来选择合适的关键字。下面是一些优异实践的建议:

1、使用new关键字

当需要创建一个值类型的对象时,可以使用new关键字,它会为对象分配内存并返回指向该内存的指针。注意,在使用new关键字创建的对象后,需要手动对其进行赋值操作。

2、使用make关键字

当需要创建引用类型的对象(如切片、映射和通道)时,应使用make关键字。make关键字会进行初始化,并返回对应类型的对象。对于切片,应指定初始长度和容量。对于映射和通道,可以省略参数或根据实际需求指定参数。

3、确保初始化

无论是使用new还是make,都要确保对对象进行适当的初始化操作。避免使用未初始化的对象,以免造成未定义的行为或错误结果。

在Go语言中,new和make是两个常用的关键字,用于在程序中创建对象。通过合理使用new和make,我们可以更好地管理和操作Go语言中的对象,提高程序的性能和可维护性。

延伸阅读1:Go语言的使用建议有哪些

Go语言(也称为Golang)是一种由Google开发的编程语言,以下是一些使用建议:

一、学习Go语言的基础知识

在开始使用Go语言之前,建议学习其基本语法、数据类型、函数、并发模型等基础知识。掌握这些基础知识对于理解和正确使用Go语言至关重要。

二、使用标准库和第三方库

Go语言提供了丰富的标准库,涵盖了各种常用功能。熟悉并合理利用标准库可以提高开发效率。此外,Go社区也有很多优异的第三方库和工具,可以帮助解决特定的问题,节省开发时间。

三、理解并发模型

Go语言以其强大的并发支持而闻名。了解Goroutines和Channels的概念以及如何正确使用它们,可以帮助您编写高效、并发安全的代码。并发编程是Go语言的一个重要特性,合理利用并发可以提高程序的性能和响应能力。

四、使用Go工具链

Go语言提供了一套强大的工具链,包括编译器、测试工具、性能分析工具等。熟悉并合理使用这些工具可以简化开发流程,提高代码质量和性能。

五、编写清晰可读的代码

Go语言强调代码的简洁和可读性。编写清晰、易于理解的代码可以提高代码的可维护性和协作效率。遵循Go语言的命名约定和代码风格,注重代码的可读性。

六、进行单元测试

Go语言鼓励进行单元测试,通过编写测试用例来验证代码的正确性。编写全面的单元测试可以帮助您捕获潜在的问题并提高代码的质量。

七、关注性能优化

Go语言在性能方面表现出色,但在某些情况下可能需要进行性能优化。了解性能优化的技巧和工具,可以帮助您发现和解决潜在的性能瓶颈。

八、参与Go社区

Go语言拥有一个活跃的社区,有很多资源和社区活动可以帮助您学习和提高。参与讨论、阅读优异的开源代码、贡献自己的代码,可以帮助您更好地理解和使用Go语言。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT