在 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