在 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