Go 不像 Java 那样是一种面向对象的语言。构造函数不是标准语言特性。

在开发 Go 程序时,你应该构建彼此之间仅弱关联的模块化组件。本文将讨论如何在 Golang 中使用不同的函数创建构造函数。

init
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
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
newUserstruct
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
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。