2016-08-18 6 views
0

2つの変数を宣言された変数とそれ以外の変数がある場合に2つの値を返す関数に2つの変数を割り当てる方法はありますか?例えばGolang変数の割り当て

:上記のコードで

var host string 
if host, err := func(); err != nil {} 

、ホストが宣言が、ERRはありません。

+0

これは自動的に実行されます。 :=新しい変数がある場合は=、両方存在する場合は=です。 – Puzzle84

+0

2番目の文がif/for文の場合。宣言された変数 "host"はfunc()によって返された値を保持しますか? – Keeto

+0

短い答えはあなたが求めていることはできません。 'err'も宣言しなければなりません。 – Endophage

答えて

5

あなたの例では、単にホストを宣言するべきではありません。そのような部分的な割り当てを行う方法はありません... :=を使用して宣言と割り当てを短くするか、=を使用していて、割り当てを行うだけです。私は個人的にGOにはvarという単語を書くことはほとんどありません。

1つ以上の変数ですでに宣言されている変数が1つしかない場合は、:=を代入することはできますが、その逆は真ではありません。左辺値の1つ以上が既に宣言されていない場合は、=を使用できません。

+0

2番目のステートメントがif/forステートメント。宣言された変数 "host"はfunc()によって返された値を保持しますか? – Keeto

+0

@Keetoしかし、あなたがすると、 'ホスト'は 'if'のスコープ内でのみ利用可能になります。遊びの例があります。 https://play.golang.org/p/3ONeB2D6kH ホストがifの外側にないことがわかります。 – evanmcdonnal

1

if:=を使用すると、ifの範囲で宣言された新しい変数が常に得られます。 ifに続いて、hostの値は以前と同じになります。これを行うには、ifの前にhosterrの両方を宣言する必要があります(ifでは:=を使用しないでください)。