今回は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文で定義する時は一旦考えた方が良さそうですね!
自戒も込めて...