通过func (Struct).New() *Instance创建 struct
时间: 2023-12-05 11:06:40 浏览: 30
在 Go 语言中,可以通过在结构体(struct)上定义一个方法,来实现在结构体上调用函数并返回一个该结构体类型的实例的功能。这个方法通常被称为构造函数(constructor),可以用于创建一个新的结构体实例,并对该实例进行初始化。
下面是一个示例代码,演示如何通过在结构体上定义一个 New 方法来创建该结构体类型的实例:
```go
package main
import "fmt"
// 定义一个 Person 结构体
type Person struct {
Name string
Age int
Address string
}
// 定义 Person 结构体的构造函数 New,返回一个指向 Person 类型的指针
func (p Person) New(name string, age int, address string) *Person {
return &Person{Name: name, Age: age, Address: address}
}
func main() {
// 使用 Person 结构体的构造函数创建一个新的 Person 实例
p := Person{}.New("Alice", 25, "New York")
// 打印新创建的 Person 实例
fmt.Println(*p)
}
```
在这个示例代码中,我们定义了一个名为 Person 的结构体,并在该结构体上定义了一个 New 方法,该方法接受三个参数 name、age 和 address,并返回一个指向 Person 类型的指针。
在 main 函数中,我们使用 Person 结构体的构造函数 New 创建了一个新的 Person 实例,并将其赋值给变量 p。最后,我们打印输出了创建的新的 Person 实例。
需要注意的是,在定义结构体的方法时,需要使用结构体类型的值接收者(value receiver)来定义方法。这样可以确保在方法调用时,结构体实例的值不会被修改。