Go言語でビジネスや開発に役立つソフトウェアを構築する際、構造体は重要な役割を果たす。
構造体は、プログラムを理解しやすくするための小さな構成要素にプログラムを分解するのに役立つ。
構造体の特徴
Goの構造体には次のような特徴がある。
- フィールドをまとめることができる。
- 他の構造体を埋め込むことができるが、アップキャストやダウンキャストはできない。
- 関数の中や式の中でも動的に定義できる。
構造体の基本的な書き方では、フィールドの名前と型を定義する。
小文字で始まるフィールド名はプライベート、大文字で始まるフィールド名はパブリックになる。
構造体のインスタンス化
Goの構造体をインスタンス化する方法は3つある
-
new()
関数で作成 -
var
変数宣言 - 複合リテラルを使用
それぞれの特徴
生成方法 | 生成される型 | フィールドの初期値 |
---|---|---|
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}
}
参考