首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么没有new关键字可以实例化一个struct?

没有使用 new 关键字实例化一个 struct 的原因是,在 Go 语言中,new 关键字是用于分配内存并返回指向该内存的指针。而在 Go 语言中,使用 new 关键字实例化一个 struct 是不必要的,因为在 Go 语言中,struct 是一种值类型,而不是引用类型。

在 Go 语言中,struct 可以通过以下两种方式实例化:

  1. 使用字面量实例化:
代码语言:go
复制
type Person struct {
    Name string
    Age  int
}

p := Person{Name: "Alice", Age: 30}
  1. 使用 new 关键字实例化:
代码语言:go
复制
type Person struct {
    Name string
    Age  int
}

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

在上面的例子中,我们使用了 new 关键字来分配内存,并返回了一个指向该内存的指针。然后,我们使用指针来访问 struct 的字段,并为它们赋值。

总之,使用 new 关键字实例化一个 struct 是可选的,因为在 Go 语言中,struct 是一种值类型,可以直接使用字面量进行实例化。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • C#中抽象类与抽象方法的作用与实例

    在C#中,允许把类和方法声明为抽象类与抽象方法,具体的声明方法是在类名或方法名前加上abstract关键字。 那么我们什么时候应该用抽象类呢? 如果一个类设计的目点是用来被其它类继承的,它代表一类对象的所具有的公共属性或方法,那个这个类就应该设置为抽象类。 抽象类与其它的类有什么区别呢? 抽象类是不能够被实例化的。如果一个类中包含有抽象方法,那么这个类一定要声明为抽象类。同时,抽象方法一定需要在子类中重写,让抽象方法成为一个具体的实实在在的方法。 比如,我们要声明一个动物类animal,然后有其它的类Cat(猫),Dog(狗)等具体的类来继承它,那么这个动物类就应该声明为抽象类。因为animal只是一个名词,不代表任何具体的对象,它只是代表所有动物所拥有的共同特征,所以animal类是根本不可能被实例化的。同时,如果所有动物都必须声明"叫"这样一个方法的话,那么,我们可以在animal类中声明一个抽象方法shout(),因为抽象方法是必须在子类中重写的,所以这就限制了所有继承自animal类都必须重写shout()方法。 实例: 声明Animal类

    01
    领券