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 } // 名前で初期化