天パのtech備忘録

プログラミング関係の記事を書いていきます!

Go クラス 基本

最近go言語を使い始めて、なんとなく書けるようになったのでそろそろクラスみたいな書き方をやっていこうと思い、ここに記しておきます!
とりあえず書いてあとで細かく説明していきます。

package main

import "fmt"

type Human struct {
Age int
Name string
}

func (h Human) getName() string {
return h.Name
}

func (h *Human) Birthday(newAge int) {
h.Age = newAge
}

func main() {
v := Human{Age: 3, Name: "mike"}
fmt.Println(v.getName())
v.Birthday(24)
}

 

クラス定義

type Human struct {
Age int
Name string
}
クラス定義はstructという構造体という概念を使用し定義します。構造体はフィールドをプロパティを持つことができます。
 
メソッド定義
func (h Human) getName() string {
return h.Name
}

func (h *Human) Birthday(newAge int) {
h.Age = newAge
}

クラスに紐ずくメソッドは上記のように定義します。
func (変数名 クラス名) 関数名 リターンする値 {
処理
}
となります。goは関数の中でプロパティの値を変更させる場合にはクラス名の横にを付けます。これはインスタンス変数のアドレスを指しています。アドレス変数の中身を変更することで実際の値を変更することができます。対してプロパティの中身を変更しない場合はは使用しなくて良いです。

 

インスタンス作成

func main() {
v := Human{Age: 3, Name: "mike"} // インスタンス作成
fmt.Println(v.getName())
v.Birthday(24)
}

インスタンス作成は
変数名 := クラス名{プロパティ名: 値, .....}
となります。

 

今回はとりあえずここまでにします。