LoginSignup
0
0

More than 3 years have passed since last update.

[Golang]構造体の使い方(フィールドで準備/初期化/値の設定)について(サンプル付き)

Last updated at Posted at 2019-08-11

いきなり全体のサンプル

いきなり全体のサンプルコード
package main
import "fmt"

type user struct {
    name string
    height int
    gender string
}

func main() {

    // 1. 初期化と値設定 別パターン
    u1 := new(user)
    u1.name = "織田"
    u1.height = 170
    u1.gender = "男"
    fmt.Println(u1) // => &{織田 170 男}

    // 2. 初期化と値設定 一気パターン
    u2 := user{name:"徳川", height:180, gender:"男"}
    fmt.Println(u2) // {徳川 180 男}

    // 3. 初期化と値設定 さらに省略パターン
    u3 := user{"豊臣", 165, "男"}
    fmt.Println(u3) // => {豊臣 165 男}

}

構造体とは

すごいざっくり言うと、複数の値をグループにして定義することができるもの…みたいです。

フィールドの書き方

フィールドの書き方
type /*構造体の名前*/ struct {
    /*データの名前*/ /*型*/
    /*データの名前*/ /*型*/
    /*データの名前*/ /*型*/

    // こんな感じで、好きなだけ書く
}
フィールドのサンプル
type user struct {
    name string
    height int
    gender string
}

1.実際に使う(初期化と値設定 別パターン)

まず初期化する

初期化の書き方
func /*何かのメソッドの中*/() {
    /*変数名*/ := new( /*構造体の名前*/ )
}
初期化のサンプル
func main() {
    u1 := new(user)
}

ちなみに、この時点では0(空文字)が入って初期化され、ポインタで返されている。

次にフィールドに値を設定する

フィールドへの値設定の書き方
func /*何かのメソッドの中*/() {
    /*変数名*/ := new( /*構造体の名前*/ )
    /*上で定義した変数名*/ . /*設定したいデータの名前*/  = /*設定したい値*/
    /*上で定義した変数名*/ . /*設定したいデータの名前*/  = /*設定したい値*/
    /*上で定義した変数名*/ . /*設定したいデータの名前*/  = /*設定したい値*/

    // こんな感じでデータ定義してるものを、好きなだけ書く
}
フィールドへの値設定のサンプル
func main() {
    u1 := new(user) // 初期化

    u1.name = "織田"
    u1.height = 170
    u1.gender = "男"
    fmt.Println(u1) // => &{織田 170 男}
}

サンプルの方には、どのように出力されるか、やってみてます。
ポインタなので、&が表示されています。

2.実際に使う(初期化と値設定 一気パターン)

一気に初期化と値設定する書き方
func /*何かのメソッド*/() {
    /*変数名*/ := /*構造体の名前*/ { /*データの名前*/ : /*値*/ , /*データの名前*/ : /*値*/ , /*データの名前*/ : /*値*/ }
}
一気に初期化と値設定するサンプルコード
func main() {
    u2 := user{name:"徳川", height:180, gender:"男"}
    fmt.Println(u2) // {徳川 180 男}
}

かなりスッキリかけます。
ただし、ポインタが返ってくるワケではないので注意してください。
fmt.Printlnでの実行結果も、&がありません。

3.実際に使う(初期化と値設定 さらに省略パターン)

初期化と値設定するさらに省略した書き方
func /*何かのメソッド*/() {
    /*変数名*/ := /*構造体の名前*/ { /*1つ目の値*/ , /*2つ目の値*/ , /*3つ目の値*/ }
}
初期化と値設定さらに省略したサンプルコード
func main() {
    u3 := user{"豊臣", 165, "男"}
    fmt.Println(u3) // => {豊臣 165 男}
}

さらに省略して、こう書くこともできます。
こちらも、ポインタが返されるワケではないので注意。

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