てくてくテック

【Go】if文で定義した値は使えないよ!

今回はGoでちょっとつまづいてしまったことについてお話しします。

...というのも、すごい初歩的な内容だったんですけどねw

つまづいたこと

さて、それでは早速ですが、つまづいたことについて...

みなさん、if文って使いますよね?

Go言語でももちろん使えるわけですが...

if文の中で変数を定義してしまって、外で使おうとするとエラー出てしまいました...

if a = b {
  c := a+b
}
c = 1

これだとcが定義されていないよ〜って怒られてしまいます...

いや、当たり前やろwって覆われるかもしれませんが、意外とこれで引っかかりまくるんですよね...w

っというのも、Go言語では変数定義を省略できます。

// 通常の変数定義
var a = 1

// 省略された変数定義
a := 1

この省略された書き方に慣れてしまうと、初めて使う箇所で、

”お、必要なったやん、定義しちゃお〜"って代入と合わせて書くんですが、毎回気づかず同じミスやらかしてしまいますw

対策

解決法としては非常に簡単でもう一つ外のスコープで変数を定義しておくだけです。

var c int
if a = b {
  c = a+b
}
c = 1

別の場所で定義したのでifの中ではただ代入をするだけですね。

まぁ、これだけなんですが...

Goやってるとvarでの変数定義をサボりがち(見方によっては良いことではあるんですけど)なので、変数と代入の違いがいまいちわからなかったりします...w

気づけばすぐ直せますが、みなさんもお気をつけください...!

特にif文で定義する時は一旦考えた方が良さそうですね!

自戒も込めて...

モバイルバージョンを終了