このコード:golangの便宜のために変数を再宣言しますか?
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello, playground")
var a bool
var b interface{}
b = true
if a, ok := b.(bool); !ok {
fmt.Println("Problem!")
}
}
はgolang遊び場にこのエラーを得られます。
tmp/sandbox791966413/main.go:11:10: a declared and not used
tmp/sandbox791966413/main.go:14:21: a declared and not used
これが原因で、我々は短い変数宣言golang docsに読んだことの混乱である:通常のとは異なり
変数宣言、短い変数宣言があります。 変数の再宣言は、最初に宣言されていれば同一タイプ(ブロックがブロック本文の場合は同じリスト)の同じブロック(同じタイプ)と、少なくとも1つの非ブランク変数 が新しく追加されました。その結果、再宣言は、 複数変数の短い宣言にしか現れません。再宣言では、新しい変数 が導入されません。オリジナルに新しい値を割り当てます。だから、
、私の質問:
- は、なぜ私は上記のコードで変数を再宣言することはできませんか?
は、より簡潔な方法でエラーを確認しながら関数の出力で変数を移入する 方法を見つける私はが本当にがやりたいものを、本当に私をされることができないと仮定すると。だから エラー可能な関数の値を取得するための次のフォームで改善する方法はありますか?
var A RealType if newA, err := SomeFunc(); err != nil { return err } else { A = newA }
私はそれがもし外に短いdeclsを使用して、少し短くなっているとします。 – djhaskin987