たいしたこと書いてない割には超亀進行なこのシリーズ…。そんなまったり進行なGo言語ですが、今回は、前回進めた Structs(構造体) の続きになります。
まず構造体を定義する
進める前に適当な構造体がないと始まらんので…、簡単な定義を作ります。
Go
// 青いたぬきのスペックを定義してみる
type Doraemon struct {
Height float32 // 身長
Weight float32 // 体重
Power float32 // ちから
}
Expand
構造体の初期化とフィールド値の参照
この辺りは前回触れた内容と被る部分もあるんですが、新たに構造体のポインタなどにも触れつつ、改めて見直してみます。
ということで、簡単ですがサンプルプログラムを書いてみました。
Go
package main
import "fmt"
// 青いたぬきのスペックを定義してみる
type Doraemon struct {
Height float32 // ①身長
Weight float32 // ②体重
Power float32 // ③ちから
}
// main
func main() {
// 構造体を初期化し変数に割り当てる
dora_a := Doraemon { 129.3, 129.3, 129.3 } // フィールド定義の順番に合わせて初期化する値を引数で指定することができる ※省略不可
dora_b := Doraemon { Weight: 129.3 } // ②の体重を指定して初期化することもできる ※未指定のフィールド値は0で初期化
dora_c := Doraemon {} // 引数の指定がない場合は全て0初期化
dora_p := &Doraemon { 129.3, 129.3, 129.3 } // 構造体名の戦闘に & をつけるとポインタが返る
// dora_a の中身を出力する
fmt.Printf("dora_a -> 身長:%.1f / 体重:%.1f / ちから:%.1f\n", dora_a.Height, dora_a.Weight, dora_a.Power)
// dora_b の中身を出力する
fmt.Printf("dora_b -> 身長:%.1f / 体重:%.1f / ちから:%.1f\n", dora_b.Height, dora_b.Weight, dora_b.Power)
// dora_c の中身を出力する
fmt.Printf("dora_c -> 身長:%.1f / 体重:%.1f / ちから:%.1f\n", dora_c.Height, dora_c.Weight, dora_c.Power)
// dora_p の中身を出力する、ポインタの場合は (*<変数名>).<フィールド名> と書けるが…
fmt.Printf("dora_p -> 身長:%.1f / 体重:%.1f / ちから:%.1f\n", (*dora_p).Height, (*dora_p).Weight, (*dora_p).Power)
// 無駄に長くなるので、<変数名>.<フィールド名> が一般的らしい
fmt.Printf("dora_p -> 身長:%.1f / 体重:%.1f / ちから:%.1f\n", dora_p.Height, dora_p.Weight, dora_p.Power)
}
Expand
今回進めたページ
今回は下記の2ページ分進めました。


さいごに
ほとんど前回進めた内容と被る感じですが、その点は…、まぁ、復習ってことで…_(:3」∠)_
でも、構造体のポインタについては初めて触れるものなので、記憶の片隅にでも残して置くようにします。(p_-)ミッカトモタナソウダガ…
コメント