Golang の評価順序
tl;dr
どんな言語でも評価順序は注意するべきだし評価順序が気になるコードは書かないように気をつけるべき。
golangの評価順序は定められていて、オペランド, 代入, 関数, メソッド, 通信は左から評価される。 変数の値は上記の評価とは別に評価される。 どのみち1行内で副作用を伴う関数・メソッドや通信は避けたほうが良い。
example
下みたいなコードは地雷だ。チャンネルと関数呼び出しの同居
|
|
ちなみに右辺値の変数の評価は事前に解決するため。 下のような複数代入でも変数評価は事前に行われ影響が伝播しない。 head,tail; init,lastの複数代入
|
|