Golang でコンストラクターを作成する

Jay Singh 2023年1月30日
  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

もう 1つの例は、この例の 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