見出し画像

[Go言語 入門] 構造体

golangで作ってみたいものがあり、golangを学び始めたので学習したことを書いていくノート。

---------------------------------------------------

サイトマップはこちら

---------------------------------------------------

第13回 構造体


golang にはオブジェクト指向におけるクラスという概念がない

クラスに似た役割として、情報をひとまとめにする役割を担うのが構造体である。

構造体の定義は以下

「type 構造体名 struct { フィールド }」

// main.go

type Person struct {
	Name string
	Age  int
}

関数内で以下のように宣言する。

「変数名 := 構造体名{ 各種値 }」

func main() {
	taro := Person{Name: "taro", Age: 18}
	fmt.Println(taro)
	taro.Age += 10
	fmt.Println(taro)
}

// 実行結果
// {taro 18}
// {taro 28}

上記はすべてのフィールド(ここでは Name と Age )に値がある場合のパターン

値を書き換えたい場合は、

「taro」の名前 ⇒ 「taro.Name」

「taro」の年齢 ⇒ 「taro.Age」

として値の代入が可能。

※「の」=「 . 」と解釈すれば理解しやすい。

また、フィールドの一部値が未確定の場合や、すべての値が未確定の場合における宣言は以下

hana := Person{Name: "hana"}
fmt.Println(hana)

yu := Person{Age: 20}
fmt.Println(yu)

hina := Person{}
// var hina Person <- 上と同じ
fmt.Println(hina)

// 実行結果
// {hana 0}
// { 20}
// { 0}

上から

・年齢が未確定

・名前が未確定

・両方未確定

のパターン

int 型の場合は 0 で初期化される。

String型の場合は「」(空文字)で初期化される。


~ Private と Public ~

Private:外部からの参照不可

Public:外部からの参照可

構造体名について、頭文字は原則大文字とする。小文字の場合外部からの参照が不可となる。

// 外部からの参照可
type Person struct {
	Name string
	Age  int
}

// 外部からの参照不可
type person struct {
	Name string
	Age  int
}

また、フィールドの各値についても、頭文字が小文字の場合、外部からの参照は不可となる。

// 例:Age

// Ageは外部からの参照可
type Person struct {
	Name string
	Age  int
}

// Ageは外部からの参照不可
type Person struct {
	Name string
	age  int
}

頭文字は基本は大文字、Private にする場合は頭文字を小文字にする!

以上


この記事が気に入ったらサポートをしてみませんか?