Golang 如何实例化结构体指针地址运算符
在Golang中,结构体是一种用户自定义的数据类型,它由多个字段组成。结构体实例化通常有两种方式,一种是使用值类型,另一种是使用指针类型。在使用指针类型时,需要使用指针地址运算符”&”来获取结构体实例的地址。本文将介绍如何在Golang中实例化结构体指针地址运算符。
实例化值类型的结构体
在Golang中,实例化值类型的结构体可以使用如下语法:
type Person struct {
name string
age int
}
func main() {
p := Person{"John", 30}
fmt.Println(p)
}
上述代码中,我们定义了一个Person结构体,其中包含两个字段:name和age。然后使用Person{“John”, 30}语法实例化一个Person值类型的结构体,并将其赋值给变量p。最后,我们使用fmt.Println(p)输出此结构体的所有字段。
输出结果为:
{John 30}
可以看到,我们成功实例化了一个值类型的Person结构体。
实例化指针类型的结构体
在Golang中,实例化指针类型的结构体需要使用”&”操作符获取结构体的地址。下面是一个实例化指针类型的Person结构体的示例代码:
type Person struct {
name string
age int
}
func main() {
p := &Person{"John", 30}
fmt.Println(p)
}
上述代码中,我们使用&Person{“John”, 30}语法获取指向Person结构体实例的指针,并将其赋值给变量p。最后,我们使用fmt.Println(p)输出此结构体实例的地址。
输出结果为:
&{John 30}
可以看到,我们成功实例化了一个指针类型的Person结构体,并输出了其地址。
使用new函数实例化指针类型的结构体
除了使用”&”操作符外,还可以使用new函数来实例化指针类型的结构体。示例代码如下:
type Person struct {
name string
age int
}
func main() {
p := new(Person)
p.name = "John"
p.age = 30
fmt.Println(p)
}
上述代码中,我们先使用new(Person)函数获取一个指向Person结构体的指针,并将其赋值给变量p。然后,我们使用p.name和p.age来设置其字段值。最后,我们使用fmt.Println(p)输出此结构体实例的地址和字段值。
输出结果为:
&{John 30}
可以看到,我们通过new函数成功实例化了一个指针类型的Person结构体,并设置了其字段值。
结论
在Golang中,实例化结构体指针需要使用”&”操作符或new函数来获取结构体的地址。实例化值类型的结构体比实例化指针类型的结构体更常见。使用指针类型的结构体可以节省内存空间,但需要注意指针的生命周期。