Go言語を学び始めると、
データのグループ化や
カスタムデータ型を扱う場面が出てきます。
そこで登場するのが「構造体(Struct)」です。
構造体は、異なるデータ型を
まとめて一つのまとまりとして扱うことができ、
オブジェクト指向プログラミングにおける
クラスのような役割を果たします。
本記事では、
Go言語の構造体について、
基礎から応用まで
初心者向けに丁寧に解説していきます!
構造体とは?
構造体は、
Go言語でカスタムデータ型を
作るためのデータ構造です。
異なるデータ型をまとめて一つにし、
まとまったデータとして扱うことができるため、
複数の情報を扱う際に非常に便利です。
たとえば、
「名前」「年齢」「住所」をまとめて
「Person」という構造体として扱うことで、
管理がしやすくなります。
構造体の定義方法
Go言語では、structキーワードを使って構造体を定義します。
以下の例では、Personという名前の構造体を定義し、Name(名前)、Age(年齢)、Address(住所)という3つのフィールドを持っています。
type Person struct {
Name string
Age int
Address string
}
構造体は、
このように複数の異なるデータ型を
まとめて一つのカスタム型として定義します。
構造体の使い方
構造体を定義したら、
その構造体を使ってインスタンスを作成し、
データを管理することができます。
ここでは、
構造体の基本的な使い方を見ていきましょう。
構造体の初期化方法
構造体の初期化にはいくつか方法があります。
最も簡単な方法は、
構造体名を使ってインスタンスを作成し、
初期値を設定する方法です。
p := Person{"Alice", 30, "Tokyo"}
fmt.Println(p.Name) // 出力: Alice
また、フィールド名を
指定して初期化することも可能です。
この方法では、
特定のフィールドのみを初期化し、
他のフィールドにはゼロ値(stringなら空文字、intなら0)が
自動的に設定されます。
p := Person{Name: "Bob", Age: 25}
fmt.Println(p.Address) // 出力: (空文字)
このように、
必要なフィールドだけ初期化できるため、
柔軟に構造体を利用できます。
構造体内にメソッドを定義
Go言語では、
構造体に関連する関数を
メソッドとして定義できます。
メソッドを使うことで、
構造体に関連した動作を直接定義でき、
コードの可読性や再利用性が向上します。
以下は、Person構造体に
挨拶をするメソッドを追加した例です。
package main
import "fmt"
type Person struct {
Name string
Age int
Address string
}
func (p Person) Greet() {
fmt.Printf("Hello, my name is %s!\n", p.Name)
}
func main() {
p := Person{Name: "Alice", Age: 30}
p.Greet() // 出力: Hello, my name is Alice!
}ここでは、Person型にGreetというメソッドを追加しています。
このメソッドは、Person構造体のNameフィールドを
使って挨拶メッセージを表示します。
構造体での配列とループ
構造体は複数のインスタンスを一括管理するために、
スライスや配列と組み合わせることができます。
たとえば、
複数のPerson構造体をスライスに格納し、
それをループで処理することで、
全てのインスタンスに対して処理を一度に行うことが可能です。
構造体のスライスを使ったループ処理
次の例では、
2人のPersonをスライスに格納し、forループを使って全員の挨拶を表示します。
package main
import "fmt"
type Person struct {
Name string
Age int
Address string
}
func (p Person) Greet() {
fmt.Printf("Hello, my name is %s!\n", p.Name)
}
func main() {
people := []Person{
{"Alice", 30, "Tokyo"},
{"Bob", 25, "Osaka"},
}
for _, person := range people {
person.Greet()
}
}このコードでは、peopleというスライスに
2つのPersonインスタンスを格納し、forループを使って
それぞれのGreetメソッドを呼び出しています。
結果として、
2人それぞれの挨拶が表示されます。
まとめ
本記事では、
Go言語の構造体(Struct)の基礎から、
実際に使う際の応用例までを解説しました。
構造体を使うことで、
複数の関連するデータを一つにまとめ、
効率的に管理できます。
また、メソッドを使えば、
構造体に関連する動作を
一つのまとまりとして扱うことができ、
コードの可読性や保守性が向上します。
次のステップとして、
構造体の埋め込みや、
ポインタを使った高度な使い方にも挑戦してみましょう!





