Go の構造体

Go の構造体(struct)の説明

構造体(struct)

Go ではクラスの代わりに構造体を使用する。

構造体にはメンバー変数を定義する。クラスのメソッドに相当する関数を定義するには、関数名の前に this に相当するレシーバー (変数 *構造体名) を記述する。

package main

import "fmt"

type Person struct {
	name string
	age  int
}

func (p *Person) SetPerson(name string, age int) {
	p.name = name
	p.age = age
}

func (p *Person) GetPerson() (string, int) {
	return p.name, p.age
}

func main() {
	var p1 Person
	p1.SetPerson("devkuma", 23)
	name, age := p1.GetPerson()
	fmt.Printf("%s(%d)\n", name, age)
}

実行結果:

devkuma(23)

構造体のメンバーのうち、大文字で始まるものはパッケージの外部からアクセスできる。小文字で始まるものは、パッケージの外部からアクセスできない。

type Person struct {
	Name   string // パッケージ外部からアクセス可能
	Age    int    // パッケージ外部からアクセス可能
	status int    // パッケージ外部からアクセス不可
}

構造体を使うときは、次のようにフィールドを初期化できる。

a1 := Person{ "devkuma", 26 }               // 順番に初期化
a2 := Person{ name: "devkuma", age: 32 }    // 名前で初期化