ここからはGo言語の構造体(Structs)について触れて行こうと思います。
構造体は複合データ型です。構造体を定義することで、異なるタイプの値を一緒に構成して利用することができます。
まず、構造体の宣言からやってみましょう。
構造体の宣言
構造体は次の形で宣言します。
type 構造体名 struct {
フィールド名 型名
フィールド名 型名
(...)
}
typeキーワードを使って構造体名を記述します。それに続けてstruct型を指定し、波括弧{}でデータの型を構成します。
データは、フィールド名と型名を指定します。これを複数宣言することで、複数の異なるデータ型を一緒に扱うことができます。
実際のコードの使って構造体を見て行きましょう。
次のようなコードを作ってみました。
package main
import "fmt"
type character struct {
name string
age int
}
func main() {
c1 := character{
name: "新垣結衣",
age: 32,
}
c2 := character{
name: "吉岡里帆",
age: 27,
}
fmt.Println(c1)
fmt.Println(c2)
fmt.Println(c1.name, c1.age)
fmt.Println(c2.name, c2.age)
}
typeキーワードでcharacterという構造体を宣言しています。フィールド名にname、ageを、型名にそれぞれstring型、int型を指定しています。
この構造体をmain()関数の中で利用するためにデータを格納して行きます。
変数に省略宣言でcharacter{}を代入して初期化しています。フィールド名にコロンを付けてデータの値を格納。カンマで区切って、複数のデータを格納しています。
ここでは、構造体を使ってc1、c2の2つの変数を用いて構造体を扱っています。
Println()でそれぞれを出力しています。
実行するとこうなります。
{新垣結衣 32}
{吉岡里帆 27}
新垣結衣 32
吉岡里帆 27
このように構造体を変数に代入して出力するだけでは、前半の処理のように構造体のデータそのものが出力されてしまいます。
構造体に格納されたそれぞれのデータにアクセスするには、後半の処理のように、構造体を格納した変数名にドット(.)で接続してフィールド名を指定することで目的のデータを取り出すことができます。
最後に
ここではGo言語の構造体の宣言について基本的なところを見てきました。構造体を定義することで、異なるタイプの値を一緒に扱うことができます。
構造体の定義は、typeキーワードを使って構造体名を記述し、struct型を指定することで、波括弧ブロックの中にフィールド名と型名を必要なデータだけ記述します。
構造体にデータを格納するには、フィールド名にコロンをつなげてデータの値をセットして行きます。複数のデータはカンマで区切って格納することができます。
それぞれのデータにアクセスするには、ドットに続けてフィールド名を指定します。