Golang开发-new关键字

在Go语言中,new关键字用于创建一个新的零值对象,并返回指向该对象的指针。它是Go语言中用于分配内存的一种方式。

new关键字的语法如下:

ptr := new(Type)

其中,Type表示要创建的对象的类型,ptr是指向新对象的指针。

以下是一个示例,演示如何使用new关键字创建一个新的对象:

package main

import "fmt"

type Person struct {
	Name string
	Age  int
}

func main() {
	p := new(Person)
	fmt.Println(p) // 输出:&{ 0}
}

在上述示例中,我们定义了一个Person结构体类型。然后,使用new关键字创建了一个新的Person对象,并将其分配给变量p。由于new关键字创建的是一个指针,因此p的类型为*Person。

输出结果显示,p指向一个新的Person对象,其中Name字段为空字符串,Age字段为零值(int类型的零值为0)。

需要注意的是,使用new关键字只是为对象分配了内存,并将其初始化为零值。如果需要对对象进行初始化赋值,可以使用结构体字面量或通过指针访问字段进行赋值操作。

go
Copy
p := &Person{
	Name: "John",
	Age:  30,
}

p := new(Person)
p.Name = "John"
p.Age = 30

这样,我们可以通过结构体字面量或指针赋值对新对象进行初始化。

go的make和new初始化的区别

new关键字:
new用于分配内存并返回指向该内存的指针。
它接受一个类型作为参数,并返回该类型的零值的指针。
new适用于任何类型,包括基本类型、结构体、指针、函数等。
new返回的是指针,指向分配的内存空间。该内存空间被初始化为零值。
new返回的指针可以直接使用,无需进一步初始化。
示例:

p := new(int) // 创建一个新的整数变量,并返回指向该整数的指针
fmt.Println(*p) // 输出:0,表示指针所指向的整数的零值

make关键字:
make用于创建并初始化切片、映射和通道类型的数据结构。
它接受一个类型、长度和容量(对于切片和通道)或长度(对于映射)作为参数,并返回已初始化的数据结构。
只有一些特定的引用类型(切片、映射和通道)适用于make,而基本类型和结构体类型不适用。
make返回的是已初始化的数据结构,而不是指针。
示例:

s := make([]int, 0, 5) // 创建一个长度为0、容量为5的整数切片
m := make(map[string]int) // 创建一个空的字符串到整数的映射
c := make(chan int) // 创建一个整数类型的无缓冲通道

总结:

new关键字用于分配内存并返回指向该内存的指针,适用于任何类型。
make关键字用于创建并初始化切片、映射和通道类型的数据结构,仅适用于特定的引用类型。
使用new关键字返回的是指针,使用make关键字返回的是已初始化的数据结构。
new关键字返回的指针可以直接使用,而make关键字返回的已初始化数据结构可以直接操作。文章来源地址:https://www.uudwc.com/A/qR9nm/

原文地址:https://blog.csdn.net/liulanba/article/details/132813449

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

h
上一篇2023年09月18日 00:00
下一篇 2023年09月18日 00:01