「Go/ファイル入出力」の版間の差分

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
→‎バッファリングなし: ln 生殺与奪の権
タグ: 2017年版ソースエディター
67 行
: [[C言語]]の at_exit()関数とも似ていますが、at_exit()はプログラムの終了のタイミングに実行されるのに対して、defer は関数スコープを抜けたときに実行されます。
: 一旦 defer で登録処理を取り消す方法はありません。登録された処理側で条件を判定する必要があります。
: Goでは goroutine もそうですが<ref>goroutine には、スレッドにありがちな kill や join はなく、チェンネルなどの通信を使って実現します。このため go 文には値がありません(スレッドならスレッドIDを返すところ)。</ref>、呼び出し先の[[W:生殺与奪の権|生殺与奪の権]]を呼び出し元に握らせるのではなく、予め決めた手順で通信を行い協調して状態の遷移を管理するスタイルです。
:<syntaxhighlight lang=go start=23 line>
c, err := f.Read(b)