在 Golang 中创建构造函数
Jay Singh
2023年1月30日
Go 不像 Java 那样是一种面向对象的语言。构造函数不是标准语言特性。
在开发 Go 程序时,你应该构建彼此之间仅弱关联的模块化组件。本文将讨论如何在 Golang 中使用不同的函数创建构造函数。
在 Golang 中使用 init
函数创建构造函数
Go 中没有默认构造函数,但你可以为任何类型定义函数。在本例中,我们将使用 init
函数创建构造函数。
package main
import "fmt"
type Thing struct {
Name string
Num int
}
func (t *Thing) Init(name string, num int) {
t.Name = name
t.Num = num
}
func main() {
t := new(Thing)
t.Init("Hello Boss!", 99)
fmt.Printf("%s: %d\n", t.Name, t.Num)
}
输出:
Hello Boss!: 99
在 Golang 中使用 struct
函数创建构造函数
我们使用此示例的 struct
函数声明员工的姓名和年龄。
package main
import "fmt"
type Employee struct {
Name string
Age int
}
func (e *Employee) Init(name string, age int) {
e.Name = name
e.Age = age
}
func main() {
emp := new(Employee)
emp.Init("Jay Singh", 23)
fmt.Printf("%s: %d\n", emp.Name, emp.Age)
}
输出:
Jay Singh: 23
另一个例子是示例中的 newUser
构造方法,它产生一个新的用户 struct
。该函数返回一个指向新创建的结构的指针。
package main
import "fmt"
type User struct {
firstName string
lastName string
email string
}
func newUser(firstName string, lastName string, email string) *User {
user := User{firstName, lastName, email}
return &user
}
func main() {
user := newUser("Jay", "Singh", "jayexamplesingh@gmail.com")
fmt.Println("firstName:", user.firstName)
fmt.Println("lastName:", user.lastName)
fmt.Println("email:", user.email)
}
输出:
firstName: Jay
lastName: Singh
email: jayexamplesingh@gmail.com