0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Go 言語を学ぶAdvent Calendar 2023

Day 23

【Go言語】構造体の基本的な使い方

Posted at

Go言語でビジネスや開発に役立つソフトウェアを構築する際、構造体は重要な役割を果たす。
構造体は、プログラムを理解しやすくするための小さな構成要素にプログラムを分解するのに役立つ。

構造体の特徴

Goの構造体には次のような特徴がある。

  • フィールドをまとめることができる。
  • 他の構造体を埋め込むことができるが、アップキャストやダウンキャストはできない。
  • 関数の中や式の中でも動的に定義できる。

構造体の基本的な書き方では、フィールドの名前と型を定義する。
小文字で始まるフィールド名はプライベート、大文字で始まるフィールド名はパブリックになる。

構造体のインスタンス化

Goの構造体をインスタンス化する方法は3つある

  1. new()関数で作成
  2. var変数宣言
  3. 複合リテラルを使用

それぞれの特徴

生成方法 生成される型 フィールドの初期値
new() *Struct ゼロ値のみ
var変数宣言 Struct ゼロ値のみ
複合リテラル &をつけると*Struct
つけないとStruct
初期値を設定できる

サンプルコード

new()関数
package main

import (
	"fmt"
)

type Person struct {
	FirstName string
	LastName  string
}

func main() {
	p1 := new(Person)
	p1.FirstName = "Taro"
	p1.LastName = "Yamada"
	fmt.Println(p1) // &{Taro Yamada}
}

var変数宣言
package main

import (
	"fmt"
)

type Person struct {
	FirstName string
	LastName  string
}

func main() {
	var p2 Person
	p2.FirstName = "Hanako"
	p2.LastName = "Sato"
	fmt.Println(p2) // {Hanako Sato}
}

複合リテラル
package main

import (
	"fmt"
)

type Person struct {
	FirstName string
	LastName  string
}

func main() {
	p3 := &Person{
		FirstName: "Ken",
		LastName:  "Takakura",
	}
	fmt.Println(p3) // &{Ken Takakura}
}

参考

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?