LoginSignup
0
0

Go言語における構造体(struct)の基本

Last updated at Posted at 2024-04-11

構造体とは?

go構造体は、異なるデータ型の変数を一つにまとめるための複合データ型です。例えば、名前、年齢、住所を一つの「人」型としてグループ化することができます。これにより、データの管理と操作が容易になります。

構造体の宣言

構造体はstructキーワードを使用して宣言されます。以下に簡単な構造体の宣言例を示します。

type キーワードで構造体をひとつ作るということは、struct で定義された新しい型 (type) を定義する、ということになります。

type {struct_name} struct {
   filed1 type
   filed2 type
   ...
}

type Person struct {
    Name string
    Age  int
    Address string
}

この例では、「Person」という名前の構造体を定義しています。この構造体には、Name、Age、Addressという3つのフィールドが含まれています。

構造体の利用

構造体のインスタンスを作成し、そのフィールドにアクセスして変更することができます。以下に例を示します。

var p Person
p := Person{}

構造体の作成時に初期化できます。

p := Person{
	Name: "山田太郎",
	Age: 30,
    Address: "東京都",
}

フィールド名は省略できます。

p := Person{
	"山田太郎",
	30,
    "東京都",
}

package main

import "fmt"

type Person struct {
	Name    string
	Age     int
	Address string
}

func main() {
	var p Person
	p.Name = "山田太郎"
	p.Age = 30
	p.Address = "東京都"
	fmt.Println(p)
}

コード:https://go.dev/play/p/mI1M2DWx03C

構造体にメソッドを追加

Go言語では、構造体に対してメソッドを定義することができます。これにより、オブジェクト指向プログラミングのような機能を実現できます。

func (p Person) Greet() string {
    return "こんにちは、" + p.Name + "さん!"
}

コード:https://go.dev/play/p/QPZxC61TkQr

無名構造体とネストした構造体

構造体は、無名で定義することも、他の構造体の中にネストして定義することもできます。これにより、より複雑なデータ構造を柔軟に表現できます。

type Employee struct {
    Person
    Position string
}

この例では、「Employee」構造体が「Person」構造体を含んでおり、追加で「Position」というフィールドがあります。

package main

import "fmt"

type Person struct {
	Name    string
	Age     int
	Address string
}

func (p Person) Greet() string {
	return "こんにちは、" + p.Name + "さん!"
}

type Employee struct {
	Person
	Position string
}

func main() {
	var e Employee

	e.Person = Person{
		Name:    "山田太郎",
		Age:     30,
		Address: "東京都",
	}
	fmt.Println(e.Person.Greet())
}

コード:https://go.dev/play/p/pueTJ0QMav6

構造体のエクスポート

他のパッケージから構造体やそのフィールドにアクセスするためには、構造体名とアクセスしたいフィールド名を大文字で始める必要があります。

// personパッケージ内
package person

// Person 構造体は外部パッケージからアクセス可能
type Person struct {
    Name    string // 外部パッケージからアクセス可能
    age     int    // ageは小文字で始まるため、personパッケージ外からはアクセス不可
    address string // addressは小文字で始まるため、personパッケージ外からはアクセス不可
}

まとめ

Go言語の構造体は、複数の異なる型のデータを一つにまとめ、管理しやすくするための強力なツールです。

最後に、弊社の採用情報にご興味をお持ちの場合は、ぜひカジュアルな面談をお申し込みください。

参照

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0