【Go言語】変数を寄せ集める! – Structs
しばらくサボってしまいましたが、久しぶりに「A Tour of Go」を進めてみます。
今回の内容は Structs ということで構造体と呼ばれる概念ですね。C言語などにもある概念で、そこではオブジェクト指向でいう Class に近いものなんですが、Go言語ではどんな感じなんでしょうね?
Struct(構造体)とは?
フィールドの集合らしいです。
ここで言うフィールドってのは「変数」や「ポインタ」や「配列」それに「ファンクション」で、これらのグループをまとめたものがStructってことのようです。
Structの言語仕様は下記の通り。
Struct types
A struct is a sequence of named elements, called fields, each of which has a name and a type. Field names may be specified explicitly (IdentifierList) or implicitly (EmbeddedField). Within a struct, non-blank field names must be unique.
StructType = “struct" “{" { FieldDecl “;" } “}" .
FieldDecl = (IdentifierList Type | EmbeddedField) [ Tag ] .
EmbeddedField = [ “*" ] TypeName .
Tag = string_lit .
// An empty struct.
struct {}
// A struct with 6 fields.
struct {
x, y int
u float32
_ float32 // padding
A *[]int
F func()
}
https://golang.org/ref/spec#Struct_types
Structの書き方
基本になる書き方はこんな感じ。
// 構造体の定義
type <構造体の定義名> struct {
<フィールド名> <型>
:
:
}
// 構造体を変数として扱うには
// ※フィールド名を指定しない場合は、定義した順番に引数があてがわれていく
<構造体の変数名> := <構造体の定義名> { <フィールドの値>, … }
// ※フィールド名を指定する場合は順番にとらわれずに書ける
<構造体の変数名> := <構造体の定義名> { <フィールド名>: <フィールドの値>, … }
// フィールドの値を扱うには
<構造体の変数名>.<フィールド名> // 変数名にドット(.)つけてフィールド名を指定する
実際に使ってみる
構造体を実際に使ったサンプルプログラムを作ってみました。
今回進めたページ
今回は2ページ進行しました。
さいごに
簡単なプログラミングだとあまり使わない構造体ですが、色々なデータを扱う処理などでは便利に使えるはずです。
次回もStructの予定ですが、今度はポインタを使った応用ですね。
ディスカッション
コメント一覧
まだ、コメントがありません