struct(構造体)【夏休みにGo Vol.19】

こんにちは、しーたです。
今日はstructについて学んでいきます。

struct

structとは「複数の変数をまとめて一つの型としたもの」です。
構造体とも呼ばれますね。

下記ではName, Price, Stockの3つの変数を持つ構造体fruitを定義しています。※変数名は先頭大文字です。大文字・小文字の区別はアクセスできる範囲を意味しますが、まだ理解していないので詳しい説明は省きます。

メモリを確保する場合はnewを使いますが、structに限り"&fruit{}"のように書くことが多いようです。

type fruit struct { //structの定義
	Name  string
	Price int
	Stock int
}

func main() {
	f1 := fruit{"peach", 300, 20}
	fmt.Println(f1)
	f1.Stock-- //Stockを1減らす
	fmt.Println(f1)

	f2 := fruit{Name: "orange", Price: 100, Stock: 100}
	fmt.Println(f2)

	f3 := new(fruit) //メモリの確保
	fmt.Printf("%T, %v\n", f3, f3)

	f4 := &fruit{} //f3と同じ
	fmt.Printf("%T, %v\n", f4, f4)
}

画像1


また関数にポインタを渡す場合は下記のようにします。
関数内で単に"f.Stock"とポインタを使わずに書いても問題ありません。

type fruit struct { //structの定義
	Name  string
	Price int
	Stock int
}

func changestock(f *fruit) {
	f.Stock-- //厳密には "(*f).Stock--"
}

func main() {
	f1 := fruit{"peach", 300, 20}
	fmt.Println(f1)
	changestock(&f1)
	fmt.Println(f1)
}

画像2


以上です。それでは!

いいなと思ったら応援しよう!