Golang 如何使用new关键字实例化Struct
在Golang中,我们可以使用new关键字来实例化一个Struct。但是,使用new关键字实例化Struct并不是唯一的方法,还有其他方法,比如直接声明变量并对其进行初始化。
Struct 和 new关键字
在进一步探讨如何使用new关键字实例化Struct之前,让我们快速回顾一下Struct。
Struct是一种用户定义的类型,可以将多个字段组合在一起,表示一种新的数据类型。在Golang中,定义Struct与定义普通变量类似,只需使用关键字” type “以及一个合适的名称即可。
type Person struct {
Name string
Age int
}
上面的代码定义了一个包含两个属性(Name和Age)的Person Struct。
在许多编程语言中, developers 必须显式地分配内存来创建Struct实例,但是在Golang中,new关键字可以自动分配内存来存储Struct实例。
使用new关键字创建Struct实例的语法如下:
p := new(Person)
此代码将创建一个名为p的指针,该指针指向Person Struct类型的新实例。这意味着Person struct已经被分配了足够的内存空间,并且p指向这段内存空间。
示例代码
为了更好地理解new关键字如何在Golang中实例化Struct,让我们看看以下示例代码。这个例子将创建一个名为Person的Struct类型,该类型包含3个字段(Name,Age和Email)。然后我们将使用new关键字来创建Struct的实例并为其赋初始值。
package main
import "fmt"
type Person struct {
Name string
Age int
Email string
}
func main() {
p := new(Person)
p.Name = "Lucy"
p.Age = 26
p.Email = "lucy@example.com"
fmt.Println("Name:", p.Name)
fmt.Println("Age:", p.Age)
fmt.Println("Email:", p.Email)
}
在这个例子中,我们使用了new关键字来创建了一个名为p的指向Person Struct类型的新实例。然后我们通过赋值语句初始化了Person的各个属性。最后,我们打印了Person Struct实例中的属性。
这是示例代码的输出结果:
Name: Lucy
Age: 26
Email: lucy@example.com
new关键字和make关键字的区别
值得注意的是,new关键字和make关键字的作用是不同的。new关键字只是分配了内存来存储Struct实例,而make关键字专门用于分配内存来存储特定类型的数据(例如slice、map、channel等)。
这里是一个使用make关键字分配内存以创建slice的示例:
s := make([]int, 0, 10)
在上面的示例中,我们使用make关键字创建了一个名为s的slice、该slice的长度为0,容量为10。这种用法和new关键字是不同的。
结论
在本文中,我们介绍了如何使用new关键字在Golang中实例化Struct。除new外,还有其他实例化Struct的方法,例如声明变量并对其进行初始化。了解这些不同的方法并且在实际使用时能够正确地选择和使用它们,将会让您的Golang编程更加高效。