変数

Vの変数は:=演算子で宣言および初期化できます。Vの変数はこれ以外の方法では宣言できません。つまり、いかなる変数にも初期値が存在するということです。変数の型は、右辺の値から推測されます。Vの変数はデフォルトでイミュータブル(immutable: 値を改変できない)です。

age := 23               // int
name := 'Alice'         // string
is_adult := age > 21    // bool

println(age_str)        // 23
println(name)           // Alice
println(is_adult)       // true

メモ: 変数の定義は、関数の内側でしか行なえません。Vにはグローバル変数もグローバルステートも存在しません。

変数の値を変更するには、変数がミュータブル(mutable: 改変可能)になっている必要があります。変数の宣言時にmutキーワードを用いることで、変数をミュータブルにできます。変数に新しい値を代入するには=を用います。

mut age := 20       // ミュータブルな変数ageを宣言して値20を代入する
println(age)        // 20
age = 21            // ageに新しい値を代入する
println(age)        // 21

上のコードはmutキーワードがないとエラーになります(イミュータブルな変数の値は変更できない)。 v

fn main() {
    age = 20
    println(age)
}

上のコードはコンパイルの段階でエラーになります(変数ageが宣言されていないため)。

fn main() {
    mut age := 20       // ミュータブルなage変数を宣言して値20を代入
    println(age)        // 20
    age := 21           // ERROR
}

上のage := 21では、別のエラーがコンパイル時に発生します(変数ageが同じスコープ内で既に定義されているため)。非常にシンプルで覚えやすいルールです。値の宣言は:=で、以後の代入は=と覚えておきましょう。

Goと同様、不要な値は_で受け止めて無視できます。これは値を複数返す関数で使われるのが普通です【TBD】。

_, a := foo()
println(_) // ERROR: Cannot use `_` as value

命名のルール

以下は、変数の命名で守るべきルールの一覧です。

  • 大文字を含んではならない(✖AlphaTest

  • 区切り文字にはアンダースコアを用いる(○hello_world

  • できるかぎり、意味の明快な名前を付けること

  • 名前に__を含んではならない

  • 名前に(種類を問わず)スペース文字を含んではならない

  • 名前が11文字を超えたら必ず_で区切らなければならない

上のルールはsnake_caseが由来です。Vではsnake_caseスタイルが用いられ、また推奨されます(読みやすく、書きやすく、理解しやすいため)。

正しい名前

boby
john_dads
myfamily_number

正しくない名前

IamNotValid
new Make

Last updated