3
2

More than 3 years have passed since last update.

Go言語で使用できる変数名、使用できない変数名

Posted at

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

おわりに

型や関数名が変数名として使えるのはおもしろいと思いますが
他の人と未来の自分が混乱するだけなので、よほどの理由がない限り使うのは避けるべきだと思います。

(よほどの理由や事例をご存知の方いらっしゃいましたら、ぜひ教えてください。)

3
2
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
3
2