質問: o.PublicSuffixList } return jar, nil } ``` 本来であれば戻り値がひとつだけ(`*Jar` を返すだけ)で十分のように思えますが、Go言語的には何か意味のある書き方なのでしょうか?
回答: 未だにこの形で残っている主たる理由は、Go 1内での互換性のようです。 GoのGitHub上でこの件についてのIssueが2017年1月に立っていました。これによると、 * 元々、何かしらの理由で戻り値にerrorが入れられる (将来的にerrorを返すことを見越したAPI設計かと予想されていますが確認されていません)。 * その後そのまま放置され、今に至る。今更APIを変更すると互換性を失うので、そのままにしておく。 という経緯のようです。 元々cookiejarの今の形のデザインが議論されたのがこのメールみたいですが特に説明はなく、ファイルの変化を追いつつソースのコミットやそのコードレビューを見ても特に説明になるようなコメントが残されていないので(※)、本当の所はAPI設計者に聞いてみるしか無さそうです。 * 参考 + "net/http/cookiejar: New does not need an error as return argument" -- GitHub - golang/go + "Go 1.1 cookiejar" -- golang-dev ※ exp/cookiejarとして最初に出来たときには戻り値にerrorが含まれておらず、その後上述のメールの通りerrorが含まれる形に変更。この時にはまだ実装がありませんが、その次のコミットで今の実装と同じものになっています。コードレビューの内容はコミットメッセージにリンクが貼られています。