Golang 如何使用new关键字实例化Struct

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编程更加高效。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程