HOWTO · Go

Golang에서 생성자 생성

이 튜토리얼은 Golang에서 생성자를 만드는 다양한 방법을 보여줍니다.

이 페이지의 내용

Go는 Java와 같은 의미의 객체 지향 언어가 아닙니다. 생성자는 표준 언어 기능이 아닙니다.

Go 프로그램을 개발할 때 서로 약하게만 연결된 모듈식 구성 요소를 구성해야 합니다. 이 기사에서는 다양한 함수를 사용하여 Golang에서 생성자를 만드는 방법을 다룹니다.

init 함수를 사용하여 Golang에서 생성자 생성

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

struct 함수를 사용하여 Golang에서 생성자 생성

이 예제의 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