golang | Go语言入门教程——结构体初始化与继承

2020-07-08 00:00:00 方法 理解 子类 继承 结构




今天是golang专题第10篇文章,我们继续来看golang当中的面向对象部分。

在上一篇文章当中我们一起学习了怎么创建一个结构体,以及怎么给结构体定义函数,还有函数接收者的使用。今天我们来学习一下结构体本身的一些使用方法。


初始化

在golang当中结构体初始化的方法有四种

new关键字

我们可以通过new关键字来创建一个结构体的实例,这种方法和其他语言比较类似,这样会得到一个空结构体指针,当中所有的字段全部填充它类型对应的零值。比如int就对应0,float对应0.0,如果是其他结构体则对应nil。

type Point struct {
 x int
 y int
}

func main() {
 var p *Point = new(Point)
 fmt.Print(p)
}

从这段代码当中我们可以看到,new函数返回的是一个结构体指针,而不是结构体的值。一般我们很少用new关键字,而是直接通过结构体加花括号的方式来初始化。

结构体名称

相比于使用new关键字,我们更常用的是通过结构体名称加上花括号的方式来进行初始化。

如果我们不再花括号当中填写参数的话,那么同样会得到一个填充了零值的结构体。结构体当中的所有属性都会被赋予这个类型对应的零值。

type Point struct {
 x int
 y int
}

func main() {
    p := Point{}
 fmt.Print(p)
}

如果我们想要初始化一个结构体的指针,我们只需要在结构体名称之前加上取地址符&即可。所以创建一个结构体指针可以这样:

func main() {
    := &Point{}
 fmt.Print(p)
}

golang当中取地址符和声明指针的关键字和C语言是一样的,对于熟悉C语言的同学来说,这应该并不困难。

我们在花括号当中填充参数,这些参数会按照顺序填充到结构体的属性当中。为了防止混淆,我们也可以在值之前加上它对应的属性名称。

func main() {
    p := &Point{}
    k := &Point{x: , y: 10}
 fmt.Print(p)
}

相关文章