0
0

More than 3 years have passed since last update.

Go クラス 基本

Posted at

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

main.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)
}

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

簡単ですがここまでにします。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0