在 Golang 中创建构造函数

Jay Singh 2023年1月30日 2022年4月22日
  1. 在 Golang 中使用 init 函数创建构造函数
  2. 在 Golang 中使用 struct 函数创建构造函数
在 Golang 中创建构造函数

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