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
もう 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