Skip to content

Instantly share code, notes, and snippets.

@yyoshiki41
Created August 4, 2016 11:31
Show Gist options
  • Select an option

  • Save yyoshiki41/f0bb463f66716d95466c4faf16751f45 to your computer and use it in GitHub Desktop.

Select an option

Save yyoshiki41/f0bb463f66716d95466c4faf16751f45 to your computer and use it in GitHub Desktop.

複数の返り値

関数は一つ以上の結果を返すことが出来る。

これまでに、2つ以上の値を結果として返す標準pkg内の関数の例をみることが出来る、計算された結果とそのエラーの値もしくは、計算が機能したかどうかを示すブール値など。

https://github.com/adonovan/gopl.io/blob/master/ch5/findlinks2/main.go

4つのreturn があり、それらは結果のペアを返す。

上の3つのreturnは、httphtml パッケージの元のエラーを通ることで引き起こされた。

ひとつ目のerrは、変更されていないが、2つめ3つめは fmt.Errorf によってコンテキストの情報を付加させて拡張されています。

もし、 findLinks が成功すると、最後のreturnlinksのスライスとエラーがないことを返します。

どのエラーのケースでもネットワークリソースが適切に開放するために、resp.Body は必ずクローズしなければならない。

Goのガベージコレクタは使用していないメモリを回収するが、使用されていない開かれているファイルやネットワークのコネクションのようなOSのリソースも開放すると想定してはいけない。

しかし、それらは明示的に閉じれなければならない。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment