概要 タイトルどおり、Go言語でAOP(aspect oriented programming)的なことを実現する方法を考えてみました。 JavaでSpringフレームワークで実現されているAOPやpythonのデコレータをイメージしていただけたらと思います。 具体的な実現方法 思いついた方法は以下の3つでした。 ラッパー関数で実現 リフレクションで実現 ツールで実現 以下で処理の前後にログを差し挟む、という処理を実現する方法を検証してみました。 ラッパー関数で実現 機能を付与したい構造体と同じinterfaceを満たす実装で実現する。 一番シンプルだが、機能を付与したい構造体の全てのinte…