Golang에서 생성자 생성

Jay Singh 2023년1월30일
  1. init 함수를 사용하여 Golang에서 생성자 생성
  2. struct 함수를 사용하여 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