go 语言中可以通过无指针接收者函数或指针接收者函数返回结构体变量。无指针接收者函数直接创建并返回结构体变量值副本,而指针接收者函数允许修改结构体值,但返回的仍然是值副本。
如何用 Go 返回结构体变量
在 Go 语言中,可以返回结构体变量,方法如下:
1. 无指针接收者函数
type Person struct {
Name string
Age int
}
func NewPerson(name string, age int) Person {
return Person{name, age}
}
2. 指针接收者函数
指针接收者函数允许修改结构体的值,但返回的仍然是值副本。
type Person struct {
Name string
Age int
}
func (p *Person) SetName(name string) {
p.Name = name
}
func GetPerson() *Person {
p := &Person{}
p.SetName("John")
return p
}
注意事项:
- 返回结构体变量时,Go 会自动创建该变量的值副本。
- 如果需要修改原始结构体,必须使用指针接收者函数。
- 返回结构体指针时,需要确保该指针不会指向空结构体。