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
##おわりに
型や関数名が変数名として使えるのはおもしろいと思いますが
他の人と未来の自分が混乱するだけなので、よほどの理由がない限り使うのは避けるべきだと思います。
(よほどの理由や事例をご存知の方いらっしゃいましたら、ぜひ教えてください。)