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)
}
また関数にポインタを渡す場合は下記のようにします。
関数内で単に"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)
}
以上です。それでは!