Go言語では変数名に「nil」を使っても怒られない(コンパイルが通る)と知り、
じゃあ何が使えて、何が使えないのか気になったので確認しました。
(他にもあれば追記するかも知れません)
使用できる
英数字で始まる
hoge, fuga, piyo2 など
_ で始まる(ただし、 _ 単体は不可)
_hoge, _fuga, _piyo2 など
定義済み識別子
識別子の種類 | 識別子 |
---|---|
型 | bool, byte, complex64, complex128, error, float32, float64, int, int8, int16, int32, int64, rune, string, uint, uint8, uint16, uint32, uint64, uintptr |
定数 | true, false, iota |
ゼロ値 | nil |
関数 | append, cap, close, complex, copy, delete, imag, len, make, new, panic, print, println, real, recover |
// こんな書き方でも許される
var string string = "string"
その他
main (意外ですが使えました)
使用できない
数字で始まる
1hoge, 2fuga, 3piyo など
_(アンダースコア変数)
※明示的に宣言すればコンパイルは通るが、変数としては使えない。
_ := "hogehoge" // コンパイルエラー
var _ = "hogehoge" // コンパイルは通る
予約語
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
おわりに
型や関数名が変数名として使えるのはおもしろいと思いますが
他の人と未来の自分が混乱するだけなので、よほどの理由がない限り使うのは避けるべきだと思います。
(よほどの理由や事例をご存知の方いらっしゃいましたら、ぜひ教えてください。)