[golang]変数定義について

最近Go言語を使うようになったんですが、Go言語では変数定義する時の書き方がいくつかあるみたいなので、その書き方をまとめておきます。

変数を1つずつ宣言する場合

初期値なしの場合

var str string

varの後ろに変数名、変数の型の順番で変数を定義します。

初期値ありの場合

変数宣言時に初期値を設定する場合、変数の定義方法はいくつかあります。

varの後ろに変数名、変数の型を宣言した後に初期値を設定する。

var str string = "初期値の値"

初期値の値から変数の方を推測することができるので、変数の型を省略して記述することもできます。

var str = "初期値の値"

varを省略して記述することもできます。その際は「=」で初期値を設定するのではなく、「:=」で初期値を設定します。

str := "初期値の値"

この変数定義の方法をよく使いそうですね。

複数の変数をまとめて宣言する場合

初期値なしの場合

変数名をカンマで区切ることで複数の変数定義をまとめておこなうことができます。

var str1, str2, str3 string

初期値ありの場合

複数の変数に対応した初期値を設定することで複数の変数にまとめて初期値を設定することができます。

var str1, str2, str3 string = "初期値1", "初期値2", "初期値3"

ちなみに下記のように同じ値を複数の変数に設定しようとするとエラーになります。

var str1, str2, str3 string = "初期値1"

宣言する変数の数と初期値の数は一致させる必要があります。

もちろん、変数の方を省略したり、varを省略して変数宣言することもできます。

var str1, str2, str3 = "初期値1", "初期値2", "初期値3"
str1, str2, str3 := "初期値1", "初期値2", "初期値3"

()」を利用して変数をまとめて宣言することもできます。

var (
    str1       string = "初期値"
    str2       string
    str3       string = "初期値3"
    n1         int    = 1
    n2, n3     int    = 2, 3
    num1, num2        = 1, 2
)

処理の先頭部分で変数定義をまとめて行う場合などに活用できそうです。

ちなみにこの「()」ですが、import文をまとめて書く時にも役に立ちます。

import (
    "errors"
    "golang.org/x/crypto/bcrypt"
)

こんな感じで複数のパッケージをまとめてimportすることができます。

最後に

Go言語は勉強始めたばかりなので、変数定義に柔軟性があることを理解し、実装が少しでも簡素化できるようにしたいですね。

コメントする

メールアドレスが公開されることはありません。